我有以下实体(为此示例缩小并重命名)
@Entity
public class Case {
@Id
private Long id;
@ManyToOne(optional=false)
private CourtConfiguration courtConfiguration;
@ElementCollection(fetch=FetchType.EAGER)
private List<String> caseNumbers;
}
第二实体
@Entity
public class CourtConfiguration {
@Id
private Long id;
String countyId;
String referenceId;
....
}
我正在尝试使用JPQL搜索具有某个courtConfiguration countyId并且包含所有提供的一组重要caseNumbers的caseNumbers。
所以我的查询需要countyId和caseNumbers的集合作为参数。分别称为countyId和importantCaseNumbers。
我已经尝试过但未能将其付诸实施。
我的查询看起来像这样
String query = "SELECT case FROM Case case JOIN case.caseNumbers caseNumbers WHERE ";
query += "case.caseConfiguration.countyId = :countyId ";
上面的位工作,直到我添加我的caseNumber条件。我已经尝试了foreach importantNumbers来扩展查询,一旦重要数字列表高于1,它就不起作用。没有返回任何值。
for (String importantCaseNum : importantCaseNumbers) {
query += " AND '"+importantCaseNum+"' in (caseNumbers)";
}
任何建议/指针赞赏。我想我要找的是一个case.caseNumbers包含(importantNumbers)子句。
更新我已经恢复到我的查询的本机SQL,因为我不想通过使用HQL将自己绑定到hibernate。感谢@soulcheck和@mikko帮助我。当hibernate JPA修复程序可用时,我会发布。
谢谢保罗
构建此JPQL查询的语法正确方法是使用MEMBER OF。但由于HHH-5209报告的问题,它不适用于旧的Hibernate版本(修复版本4.1.8,4.3.0.Beta1)。根据错误报告,此查询的HQL版本有效,因此您的选项至少包括: