Sql 如何建立一个;在;JPA中使用谓词的子句?
我想建立一个查询,通过“Role”和“Id”列表来返回匹配的数据,但我不能很好地理解语法应该是什么 我试着用只使用“equal”子句来遵循工作示例,但它不起作用。代码如下Sql 如何建立一个;在;JPA中使用谓词的子句?,sql,jpa,predicatebuilder,Sql,Jpa,Predicatebuilder,我想建立一个查询,通过“Role”和“Id”列表来返回匹配的数据,但我不能很好地理解语法应该是什么 我试着用只使用“equal”子句来遵循工作示例,但它不起作用。代码如下 public static Specification<CustomerUser> findByIdsAndRole(List<Long> ids, String role) { return new Specification<CustomerUser>() {
public static Specification<CustomerUser> findByIdsAndRole(List<Long> ids, String role) {
return new Specification<CustomerUser>() {
private static final long serialVersionUID = -3381908547196927973L;
public Predicate toPredicate(Root<CustomerUser> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
List<Predicate> predicates = new ArrayList<>();
if (ids != null) {
predicates.add(builder.in(root.get("id"), ids));
predicates.add(builder.equal(root.get("role"), role));
}
return builder.and(predicates.toArray(new Predicate[0]));
}
};
}
公共静态规范findByIdsAndRole(列表ID,字符串角色){
返回新规范(){
私有静态最终长serialVersionUID=-3381908547196927973L;
公共谓词toPredicate(根根、CriteriaQuery查询、CriteriaBuilder){
列表谓词=新的ArrayList();
如果(id!=null){
add(builder.in(root.get(“id”),id));
add(builder.equal(root.get(“角色”),role));
}
返回builder.and(谓词.toArray(新谓词[0]);
}
};
}
它给了我一个错误,它告诉我从中删除参数“id”。但是如果我像这样运行代码,我会得到以下错误日志:
org.postgresql.util.psqleexception:ERRO:syntax error at or near“”请尝试
谓词.add(root.get(“id”).in(ids))代码>是的,它很有效!谢谢,这是预期的语法。