Здравствуйте, Blazkowicz, Вы писали:
D>>Offtop. А БД точно должна быть в таком денормализованном состоянии? Это, как видишь, уже вызывает проблемы. B>Денормализация это один из способов оптимизиации производительности.
Я в курсе. Просто интересно, зачем это было сделано именно в этом случае. Особенно использование строки и разделителя.
Re: hibernate: сохранение collection (list) в строку таблицы
Здравствуйте, AlexL_, Вы писали:
AL_>Возможно ли в хибернейте сохранять коллекцию в строку? AL_>например, была коллекция с элементами: "one", "two", "three" AL_>и сохранилось в ячейку таблицы через разделитель: one, two, three
AL_>Если дадите пример мэппинга, буду очень признателен
АФАИК из коробки нельзя но можно сделать UserType и тогда без проблем
WBR, Igor Evgrafov
hibernate: сохранение collection (list) в строку таблицы
Возможно ли в хибернейте сохранять коллекцию в строку?
например, была коллекция с элементами: "one", "two", "three"
и сохранилось в ячейку таблицы через разделитель: one, two, three
Если дадите пример мэппинга, буду очень признателен
Re: hibernate: сохранение collection (list) в строку таблицы
Здравствуйте, AlexL_, Вы писали:
AL_>Возможно ли в хибернейте сохранять коллекцию в строку? AL_>например, была коллекция с элементами: "one", "two", "three" AL_>и сохранилось в ячейку таблицы через разделитель: one, two, three
Offtop. А БД точно должна быть в таком денормализованном состоянии? Это, как видишь, уже вызывает проблемы.
Re[2]: hibernate: сохранение collection (list) в строку табл
Здравствуйте, Donz, Вы писали:
D>Offtop. А БД точно должна быть в таком денормализованном состоянии? Это, как видишь, уже вызывает проблемы.
Денормализация это один из способов оптимизиации производительности.
Re: hibernate: сохранение collection (list) в строку таблицы
Здравствуйте, AlexL_, Вы писали:
AL> Возможно ли в хибернейте сохранять коллекцию в строку? AL> например, была коллекция с элементами: "one", "two", "three" AL> и сохранилось в ячейку таблицы через разделитель: one, two, three
AL> Если дадите пример мэппинга, буду очень признателен
А что мудрить-то?
GIV>MyEntity entity = new MyEntity();
GIV>entity.getCollection().add("boom"); // <-- угадай что будет тут
GIV>
Да, поторопился. Но суть та же:
@Entity
public class MyEntity
{
private Collection<String> collection;
@Transient
public void setCollection(Collection<String> col)
{
this.collection = col;
}
@Transient
public Collection<String> getCollection()
{
return this.collection;
}
@Column(nullable=false) // делаем package local, так что только hibernate их будет видеть. А может можно даже и private, но не уверен, надо тестить.
String getCollectionStr()
{
return Utils.join(collection, ",");
}
void setCollectionStr(String s)
{
this.collection = new ArrayList<String>(Arrays.asList(s.split(",")));
}
}
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай