使用JPA 2.0的CriteriaBuilder构建动态查询时,我有些困惑。
我猜我有一个很常见的用例:用户提供了任意数量的搜索参数X进行连接和/或连接:
select e from Foo where (name = X1 or name = X2 .. or name = Xn )
Method或CriteriaBuilder不是动态的:
谓词或(谓词…限制)
有想法吗?样品?
在您的情况下,我宁愿Expression#in(Collection)
避免不得不循环并Predicate
动态地构建化合物:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Foo> cq = cb.createQuery(Foo.class);
Metamodel m = em.getMetamodel();
EntityType<Foo> Foo_ = m.entity(Foo.class);
Root<Foo> foo = cq.from(Foo_);
cq.where(my.get(Foo_.name).in(params));
您可能需要检查使用Criteria API和Metamodel
API的基本类型安全查询,以
获取更多详细信息。
问题内容: 我曾尝试使用FLINQ,但F#3.0 beta版已经过时了。 有人可以给我一些关于如何在F#中创建动态SQL查询的指示吗? 问题答案: 在F#3.0中,查询会自动加引号,因此您不能使用引号拼接(语法)来构成查询。通过使用拼接来组成查询,您可以编写的大多数内容仍可以通过“常规LINQ方式”来完成,方法是从先前的源创建一个新查询并添加即过滤: 这样,您可以动态添加条件,动态指定投影(使用)
问题内容: 我有一个关于使用JdbcTemplate进行动态查询的问题。 我的代码如下: 现在,我的问题是,我想要与插入查询中的自动生成问号相同数量的“值”。 现在,值变量考虑为一个字符串,因此,如果我有2个或更多问号,则在值变量中只有一个用逗号分隔的完整字符串,因此它不起作用。 见下面我的查询: 我想要如下: 问题答案: }
我正在为spring批处理使用java配置(spring boot)。我有一个员工Id列表,对于每个Id,我需要运行一个查询(如下所示),然后处理数据。 我知道我们可以使用阅读器。setPreparedStatementSetter动态设置上述SQL中的参数。但是,我不确定如何对列表中的每个员工id重复批处理过程。即使我将reader()标记为@StepScope,也只会调用一次reader。(即
我们的应用程序使用Dropwizard和JDBI来处理对Postgres数据库的查询。 通常,我们会有一个不同的数据库用于生产和生产,但现在我们正在与一个新系统集成,这将共享用于生产和产品的相同数据库,但使用了一组不同的表。 例如,我们将有表用户和users_stg 有没有一种方法可以将表名以动态方式传递给查询,以便我们可以在属性文件中设置表名? 当前查询的示例 所需查询示例 当然,@Bind不会
问题内容: 我有一个名为generate_table的函数,该函数需要2个输入参数(和) 现在,我尝试使用PLPGSQL处理第二个函数,该函数将获取所有分支的列表以及每个分支的最新日期,并将其作为参数传递给generate_table函数。 我的查询是这样的: 结果如下: 我需要的是函数运行这样的内容 我已经阅读了很多有关PLPGSQL的文章,但到目前为止,我只能说我几乎不了解其基础知识。 我读到
问题内容: 我正在使用PDO,并希望执行以下操作: PDO是否允许我这样绑定表名和列名?这 似乎是 允许的,但是却让我周围的报价参数,即使我用PDO :: PARAM_INT或PDO :: PARAM_BOOL作为数据类型。 如果这不起作用,如何安全地对变量进行转义,以便可以在查询中对它们进行插值? 问题答案: 不幸的是,您不能按列名绑定参数。 您可以尝试动态创建SQL命令: 只要确保对参数/变量