Я немного озадачен тем, как что-то делать в HQL.
Итак, допустим, у меня есть класс Foo, который я сохраняю в спящем режиме. Он содержит набор значений enum, например:
public class Foo
{
@CollectionOfElements
private Set<Bar> barSet = new HashSet<Bar>();
//getters and setters here ...
}
и
public enum Bar
{
A,
B
}
Есть ли инструкция HQL, которую я могу использовать для выборки только тех экземпляров Foo, чей barSet содержит Bar.B?
List foos = session.createQuery("from Foo as foo " +
"where foo.barSet.contains.Bar.B").list();
Или я застрял, извлекая все экземпляры Foo и отфильтровывая их на уровне DAO?
List foos = session.createQuery("from Foo as foo").list();
List results = new ArrayList();
for(Foo f : foos)
{
if(f.barSet.contains(Bar.B))
results.add(f);
}
Спасибо!