gpt4 book ai didi

java - 当实体类有子类(可嵌入 id)时,使用 JPA Criteria API 选择查询

转载 作者:行者123 更新时间:2023-12-01 09:36:13 25 4
gpt4 key购买 nike

我是 JPA 新手。

我在以下链接中找到了如何使用 JPA criteria API: JPA Criteria API with multiple parameters

谓词的代码是:

Root<CustomerEntity > customerEntity = cq.from(CustomerEntity.class);
List<Predicate> predicates = new ArrayList<Predicate>();
//Adding predicates in case of parameter not being null
if (param1 != null) {
predicates.add(
qb.equal(customerEntity.get("fieldName"), param1));
}

但是我的客户实体类有一个可嵌入的id(复合主键)

在这种情况下如何使用 JPA criteria API

所有可嵌入的 id 对象值是否也必须用于搜索(选择查询)?

最佳答案

您必须执行 2 个步骤:

在可嵌入对象上实现 equals 和 hashcode

像平常一样创建谓词

  predicates.add(
qb.equal(customerEntity.get("id"), embeddableId));

更新您无法在不填充其所有值的情况下搜索整个对象。要仅搜索一个属性,只需遍历路径并进行比较

predicates.add(
qb.equal(customerEntity.get("id").get("property1"), embeddableId.getProperty1()));

希望这会有所帮助!

关于java - 当实体类有子类(可嵌入 id)时,使用 JPA Criteria API 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38893081/

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