如何在 TypedQuery 中为列表类型添加条件

How to add condition for List type in TypedQuery

我有具有以下属性的实体:

@Table(name = "MY_TABLE")
public class MyTable {
  ......
  @OneToMany(mappedBy = "mytable", cascade = ALL, orphanRemoval = true)
  private List<MyAnotherTable> otherTableValues = new ArrayList<MyAnotherTable>();
  ......
}

现在我正在尝试将 HSQL 编写为

TypedQuery<Share> q =
            getEntityManager().createQuery("SELECT MyTable FROM MyTable AS mytable WHERE " +
                    "mytable.someField=:firstParam AND mytable.secondField IS NOT NULL AND " +
                   // "AND mytable.otherTableValues"
                   , Share.class);
    q.setParameter(firstParam, firstVal);
    return q.getResultList();

所以不确定如何在 otherTableValues 上添加条件,因为它是列表类型。有什么建议吗?

您必须加入合集:

SELECT DISTINCT mytable
FROM MyTable AS mytable join mytable.otherTableValues AS otv
WHERE mytable.someField = :firstParam
  AND mytable.secondField IS NOT NULL
  AND otv.someOtherField = :someOtherField