наложить Criteria (Restriction) на Set
От: Аноним  
Дата: 06.10.08 10:35
Оценка:
I have an object with lazy-loaded Set mapped like this:
У меня есть объект с Set, который объявлен следующим образом
@OneToMany(mappedBy = "transaction", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
@JoinColumn(name = "transaction_id", nullable = false)
private Set<TransactionFlight> flights;


В классе TransactionFlight есть свойство startDate. Мне нужно в критерии наложить ограничение на это поле. Я попробовал такой вариант
criteria.add(Restrictions.gt("flights.startDate", dto.getStartDate()));


но это ожидаемо не работало.

Есть ли способ решить эту проблему без переписывания на HQL?
Re: наложить Criteria (Restriction) на Set
От: брюн Украина  
Дата: 06.10.08 10:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>I have an object with lazy-loaded Set mapped like this:

А>У меня есть объект с Set, который объявлен следующим образом
А>
А>@OneToMany(mappedBy = "transaction", fetch = FetchType.LAZY)
А>@Cascade(CascadeType.ALL)
А>@JoinColumn(name = "transaction_id", nullable = false)
А>private Set<TransactionFlight> flights;
А>


А>В классе TransactionFlight есть свойство startDate. Мне нужно в критерии наложить ограничение на это поле. Я попробовал такой вариант

А>
А>criteria.add(Restrictions.gt("flights.startDate", dto.getStartDate()));
А>

может быть все-таки NamedQuery использовать?
Re[2]: наложить Criteria (Restriction) на Set
От: Аноним  
Дата: 06.10.08 11:05
Оценка:
Здравствуйте, брюн, Вы писали:

Б>может быть все-таки NamedQuery использовать?


HQL и подобное использовать проблематично, так как там накладывается много ограничений, также есть Join'ы, которые не хочется писать ручками
Re[3]: наложить Criteria (Restriction) на Set
От: брюн Украина  
Дата: 06.10.08 11:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, брюн, Вы писали:


Б>>может быть все-таки NamedQuery использовать?


А>HQL и подобное использовать проблематично, так как там накладывается много ограничений, также есть Join'ы, которые не хочется писать ручками

вроде есть какието ведь способы фильтрации коллекций.. я правда не помню деталей
на крайний случай возможно критериями придется самостоятельно делать выборку этого сета (т.е. не пользоваться готовым), и уже там накладывать какие угодно ограничения
Re[4]: наложить Criteria (Restriction) на Set
От: Аноним  
Дата: 06.10.08 11:25
Оценка:
Проблема решена с помощью:
criteria = criteria.createAlias("flights", "flight");
criteria.add(Restrictions.gt("flight.startDate", dto.getStartDate()));
Re[5]: наложить Criteria (Restriction) на Set
От: noblackberry Беларусь  
Дата: 06.10.08 13:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Проблема решена с помощью:

А>
А>criteria = criteria.createAlias("flights", "flight");
А>criteria.add(Restrictions.gt("flight.startDate", dto.getStartDate()));
А>


Возможно такой вариант
criteria.createCriteria("flights")
.add(Restrictions.gt("startDate", dto.getStartDate()));
Free 150$ Bounus
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.