Вопрос по Hibernate
От: Pavel Dvorkin Россия  
Дата: 28.03.07 13:02
Оценка:
Есть класс

public class ProductNode {
private Set<ProductType> productTypes = new HashSet<ProductType>();

@CollectionOfElements
public Set<ProductType> getProductTypes() {
return productTypes;
}
}

ProductType — это просто enum

Таблиц в БД, естественно, две — ProductNode и ProductNode_ProductType. Во второй хранятся пары productnode_id и enum значения

Теперь есть некий иной

Set<ProductType> typeSet;

Надо сделать запрос, который вернул бы все ProductNode, у которых productTypes содержит хотя бы один элемент из typeSet. Иными словами, вернут те ProductNode, для которых пересение этих сетов непустое.

Если бы ProductNode_ProductType была отдельным классом , то проблем бы не было — простой IN. Но такого класса нет, и делать его не хочется.
With best regards
Pavel Dvorkin
Re: Вопрос по Hibernate
От: aka50 Россия  
Дата: 28.03.07 15:26
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>ProductType — это просто enum

PD>Set<ProductType> typeSet;

PD>Надо сделать запрос, который вернул бы все ProductNode, у которых productTypes содержит хотя бы один элемент из typeSet. Иными словами, вернут те ProductNode, для которых пересение этих сетов непустое.


По теме: видиться мне что-то вроде
select p from Product p where p.productTypes in (select elements(s.typeSet) from TypeSets s where bla bla)


ЗЫ: Я тут тоже недавно воевал с этими коллекциями: http://rsdn.ru/Forum/Message.aspx?mid=2402473#2402473
Автор: aka50
Дата: 13.03.07

кривовато пока, не весь hb код о них знает и по этом путается и косячит в генерируемом sql.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.