gpt4 book ai didi

java - JPA 查询存在于

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:01 25 4
gpt4 key购买 nike

我有以下实体(针对此示例进行了缩减和重命名)

@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 来扩展查询,并且一旦重要数字列表超过一个它就不起作用。没有返回任何值。

for (String importantCaseNum : importantCaseNumbers) {
query += " AND '"+importantCaseNum+"' in (caseNumbers)";
}

任何建议/指示表示赞赏。我想我要找的是 case.caseNumbers contains (importantNumbers) 子句。

更新 我已将查询恢复为 native SQL,因为我不想通过使用 HQL 将自己绑定(bind)到 hibernate 状态。感谢@soulcheck 和@mikko 帮助我。当 hibernate JPA 修复程序可用时,我会发布。

谢谢保罗

最佳答案

构建此 JPQL 查询的语法正确方法是使用 MEMBER OF。但是由于HHH-5209中报告的问题它不适用于旧的 Hibernate 版本(修复版本 4.1.8、4.3.0.Beta1)。根据此查询的错误报告 HQL 版本,因此您的选项至少包括:

  1. 使用 JPQL 查询并切换到其他 JPA 实现
  2. 改用 HQL 并坚持使用 Hibernate:

    query += "AND '"+importantCaseNum+"' in elements(caseNumbers)";

关于java - JPA 查询存在于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com