SPRING-SOURCE.RU

Отображение набора простых элементову

Spring List OneToMany

У нас есть класс Item и вместе с ним мы хотим хранить несколько картинок. Картинку сохраним на сервере, а путь поместить в базу.

Ставим Hibernate аннотацию @CollectionOfElements, а затем JPA аннотацию @JoinTable и @JoinColumn (по каким колонкам она будет соединяться).

Hibernate создаст две разные таблицы: 1 - Item, 2 - ITEM_IMAGE и в этой таблице будет всего два поля: ITEM_ID и String images. Причем эти два поля сделаются первичными ключами, чтобы они никогда не дублировались. Когда мы будет сохранять Item, то данные будут вноситься туда, когда будет доставать Item, то данные будут браться из этой таблицы. Тут даже каскады прописывать не нужно, они будут делаться автоматически.

То есть когда мы имеем связи между сущностями, то используем JPA аннотации типа @OneToMany, а когда используем связи, вроде как, обычных классов, то нужно использовать @CollectionOfElements.

Даже когда у нас есть коллекция компонентов (Embedded classes). Напримре, у нас есть Person, у него есть Adress. Если у него один адрес, то это стандартный embedded класс - эту ситуацию мы уже обсуждали. Что если у Person несколько адресов и мы не хотим делать адрес отдельной сущностью, а сделать как компонент? В данном случае только Hibernate повзолит сохранить нам набор компонентов через @CollectionOfElements.