在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ spring-data-jpa 構(gòu)建子條件

spring-data-jpa 構(gòu)建子條件

spring-data-jpa使用CriteriaBuilder拼接where條件,怎么構(gòu)建子條件,比如這個(gè)sql:
select name,age from user where (name like '?' and age < ?) or (name like '?' and age > ?)

我現(xiàn)在用 CriteriaBuilder 的and 和or 只能搞出來沒有括號(hào)的。
有知道的請(qǐng)指教一下,謝謝

回答
編輯回答
陌璃

兩種:

第一種:

TypedQuery<User> query = em.createQuery(
  "SELECT u FROM User u WHERE (u.name like :n1 and u.age < :a1) or (u.name like :n2 and u.age > :a2)",
  User.class
);
query.setParameter("n1", n1);
query.setParameter("n2", n2);
query.setParameter("a1", a1);
query.setParameter("a2", a2);

第二種:

Predicate less = builder.and(
  builder.like(u.get("name"), n1),
  builder.lt(u.get("age"), a1)
);
Predicate more = builder.and(
  builder.like(u.get("name"), n2),
  builder.gt(u.get("age"), a2)
);
query.where(builder.or(less, more));
2017年7月30日 23:59