Java JPA CriteriaQuery-如何在比较运算符中使用
我有两个java对象Java JPA CriteriaQuery-如何在比较运算符中使用,java,hibernate,jpa,hibernate-criteria,predicate,Java,Hibernate,Jpa,Hibernate Criteria,Predicate,我有两个java对象 用户(每个用户都有一个索引列) 地址(每个地址也有一个用户索引列) 我有一个包含所有用户索引列表的列表,usersIndexList作为给定的输入,我想根据这个usersIndexList获取所有地址对象。我在另一个线程上找到了一个示例。并试图遵循它,但它不起作用 我的代码: List<String> usersIndexList= new ArrayList<String> (); for (User u : usersList) { u
用户索引
列)usersIndexList
作为给定的输入,我想根据这个usersIndexList
获取所有地址对象。我在另一个线程上找到了一个示例。并试图遵循它,但它不起作用
我的代码:
List<String> usersIndexList= new ArrayList<String> ();
for (User u : usersList) {
usersIndexList.add(u.getIndex());
}
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<User> subQuery = criteriaBuilder.createQuery(User.class);
Root<User> fromUser= subQuery.from(User.class);
Expression<String> exp = fromUser.get("user_index");
Predicate predicate = exp.in(usersIndexList);
subQuery.where(predicate);
TypedQuery<User> query = getEntityManager().createQuery(subQuery);
return query.getResultList();
List usersIndexList=newarraylist();
for(用户u:usersList){
usersIndexList.add(u.getIndex());
}
CriteriaBuilder CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery子查询=criteriaBuilder.createQuery(User.class);
Root-fromUser=subQuery.from(User.class);
表达式exp=fromUser.get(“用户索引”);
谓词=exp.in(usersIndexList);
where(谓词);
TypedQuery query=getEntityManager().createQuery(子查询);
返回query.getResultList();
但此查询未返回所需的结果:(
有人能告诉我,我哪里做错了,或者如果可能的话,通过nativequery
或namedquery
或任何其他方式给我一个替代的解决方案吗?根据你的问题,你想根据这个usersIndexList
获取所有地址对象。但是在你的代码中你选择了地址
。我的理解正确吗?如果正确,请将根目录更改为地址
,如下所示-
List<String> usersIndexList= new ArrayList<String> ();
for (User u : usersList) {
usersIndexList.add(u.getIndex());
}
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Address> subQuery = criteriaBuilder.createQuery(Address.class);
Root<Address> fromAddress= subQuery.from(Address.class);
Expression<String> exp = fromAddress.get("user_index");
Predicate predicate = exp.in(usersIndexList);
subQuery.where(predicate);
TypedQuery<Address> query = getEntityManager().createQuery(subQuery);
return query.getResultList();
List usersIndexList=newarraylist();
for(用户u:usersList){
usersIndexList.add(u.getIndex());
}
CriteriaBuilder CriteriaBuilder=getEntityManager().getCriteriaBuilder();
CriteriaQuery子查询=criteriaBuilder.createQuery(Address.class);
Root-fromAddress=subQuery.from(Address.class);
表达式exp=fromAddress.get(“用户索引”);
谓词=exp.in(usersIndexList);
where(谓词);
TypedQuery query=getEntityManager().createQuery(子查询);
返回query.getResultList();
有关答案,请参考答案的链接。请参考您的查询格式正确的链接。您能解释一下是什么意思吗?但是此查询没有返回所需的结果
?