SPRING-SOURCE.RU

Списки. Отображение списка один-ко-многим

Spring List OneToMany

Что если нам нужно отобразить список объектов? Чем список отличается от коллекции и от наборов в Java? Списки упорядоченный набор данных (get(index)). В Set набор не упорядоченный, но дубликатов там быть не может. Коллекции более гибкий тип данных.

По умолчанию в JPA запросы возвращают List, элементы которого упорядоченны по id базы данных, либо вообще могут быть не упорядочены.

Что если нам нужно хранить индексы? Напримре, у нас есть электронный опросник, вопросы должны находится в строго заданных местах. Когда мы их добавляем в базу, то им присвоятся id, если это так, то вам повезло, а что если они назначаются не последовательно?

Когда мы их вытащим из базы, от они могут быть перепутаны. В данном случае нужно применить структуру данных именно List. В позицию 0 - токой-то объект 1 - другой итд. Вопрос: как их сохранить в базу, чтобы каждый объект был на своей позиции? В JPA нет способа соханения всего этого в базу. Нужно использовать примочку Hibernate.

                        
import org.hibernate.annotations.IndexColumn
public class Item {
@OneToMany
@IndexColumn(name = "BID_POSITION") указывается над списком Bid-ов.
Private List<Bid> bids;
		

Hibernate в классе Bid создаст дополнитульную колонку и назовет ее BID_POSITION и там будет сохранять позиции элемента в списке. По сути, когда все будет доставаться, то сортировка будет по этой колонке, будет получать список, где каждый элемент будет находиться в строго заданной позиции.