Как добавить условие для типа списка в 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();

Так что не уверен, как поставить consition на otherTableValues, так как это тип списка. Любое предложение?

1 ответ

Решение

Вы должны присоединиться к коллекции:

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
Другие вопросы по тегам