gpt4 book ai didi

java - JPA 标准集/列表不能用作 PluralAttribute 来创建谓词

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:56 26 4
gpt4 key购买 nike

我有一个实体类 X,它包含 Y 实体的集合。

X

@ManyToMany
private List<Y> items = new ArrayList<>();

我正在尝试制定 JPA 标准查询限制来测试集合中是否存在 Y 的实例。

X entity = ...; // Some instance
Predicate p = criteriaBuilder.isMember(entity, subRoot.get(X_.items))

给我一​​个错误: (argument mismatch; ListAttribute<X,Y> cannot be converted to PluralAttribute<X,C,E>))

当我查看元模型时,List 属性如下所示:

public static volatile ListAttribute<X, Y> items;

转到ListAttribute定义:

public interface ListAttribute<X extends Object, E extends Object> 
extends PluralAttribute<X, List<E>, E> {

我尝试过转换 criteriaBuilder.isMember(entity, (PluralAttribute)subRoot.get(X_.items))并从集合更改为列表。

这是否可行,或者是否有其他方法来检查对象是否出现在 JPA Criteria 查询的集合中?

最佳答案

我们通过连接让它工作。

Join join = root.join(root.get(X_.items);

query.where(criteriaBuilder.equal(root.get(X_.items), entity))

输出是这样的:

从 X x 中选择 x_.*在 x_.id=item_.X_id 上内部联接 X_Item item_,其中 x_.item_id=?

关于java - JPA 标准集/列表不能用作 PluralAttribute 来创建谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26908769/

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