我需要制作一个使用JPA Criteria
API和多个参数的搜索方法。现在的问题是,并非每个参数都是必需的。因此某些可能为null,因此不应将其包含在查询中。我已经使用CriteriaBuilder进行了尝试,但看不到如何使其工作。
使用Hibernate Criteria API,这相当容易。只需创建条件,然后添加限制。
Criteria criteria = session.createCriteria(someClass.class);
if(someClass.getName() != null) {
criteria.add(Restrictions.like("name", someClass.getName());
}
如何使用JPA的Criteria API达到相同的目的?
概念是构造javax.persistence.Predicate数组,该数组仅包含我们要使用的谓词:
要查询的示例实体:
@Entity
public class A {
@Id private Long id;
String someAttribute;
String someOtherAttribute;
...
}
查询本身:
//some parameters to your method
String param1 = "1";
String paramNull = null;
CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery cq = qb.createQuery();
Root<A> customer = cq.from(A.class);
//Constructing list of parameters
List<Predicate> predicates = new ArrayList<Predicate>();
//Adding predicates in case of parameter not being null
if (param1 != null) {
predicates.add(
qb.equal(customer.get("someAttribute"), param1));
}
if (paramNull != null) {
predicates.add(
qb.equal(customer.get("someOtherAttribute"), paramNull));
}
//query itself
cq.select(customer)
.where(predicates.toArray(new Predicate[]{}));
//execute query and do something with result
em.createQuery(cq).getResultList();
问题内容: 我有一个源输入 input.txt 我想将这些输入馈入程序,如下所示: 所以我尝试使用 xargs ,但是没有运气。 它给 但我想要 任何的想法? 问题答案: 到目前为止给出的解决方案都无法正确处理包含空格的文件名。如果文件名包含“或”,有些甚至会失败。如果输入文件是由用户生成的,则应该准备好使用令人惊讶的文件名。 GNU Parallel 很好地处理了这些文件名,并为您(至少)提供了
我有寻呼路线/电影吗?categoryId=21213在这个页面上,我有一部分演员,点击它应该重定向到/movies?categoryId=21213/演员?actorId=23434234 我应该如何正确地描述用一个actor来渲染我最新的组件?我试过了 但这不起作用
可以使用零个或多个参数定义Clojure函数。 传递给函数的值称为arguments ,参数可以是任何类型。 参数的数量是函数的arity。 本章讨论了一些具有不同arities的函数定义。 在以下示例中,函数demo使用每个函数定义的多个参数进行定义。 (defn demo [] (* 2 2)) (defn demo [x] (* 2 x)) (defn demo [x y] (* 2 x y
问题内容: 我知道关于从Java执行流程有很多解决的问题,但是我无法使用提供的答案解决问题。我正在尝试从Java应用程序创建postgresql数据库备份。我使用以下代码 执行以上代码后,出现以下错误: 仅当备份文件的路径包含空格时才出现问题,否则将创建备份。我试图在文件路径中同时使用斜杠和反斜杠,但我引用了文件路径,但每次都遇到相同的错误。可以从命令提示符处执行命令。 我做错了。关于Proces
问题内容: 我正在尝试创建一个,但是在方法中添加一些错误。 请帮助我如何添加参数以及如何将其传递给在其中声明a和的另一个函数。 我的另一个功能是insertData(…) 我正在尝试创建一个并将其传递给函数。但是,当我在第一个函数中调用方法时,它将引发错误。 错误是 你调用的对象是空的 问题答案: 如果不调用其构造函数(新),则不能使用任何变量(例如,参考对象),但是不能使用新变量直接对其进行初始