【发布时间】:2014-11-13 12:20:07
【问题描述】:
我有一个实体类 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)) 并从 Set 更改为 List。
这是否可行,或者是否有替代方法来检查对象是否出现在 JPA Criteria 查询的集合中?
【问题讨论】:
标签: java hibernate jpa criteria-api