У меня возникли некоторые проблемы при работе с отношениями @ManyToMany здесь. Я понимаю, что используя @JoinTable, а не создавая класс ManyToMany, это довольно просто.
С помощью этого метода в JSP цикл через коллекцию очень прост. Я скопировал мой пример отсюда: http://www.mkyong.com/hibernate/hibernate-many-to-many-relationship-example-annotation/ Допустим, у нас есть коллекция акций, которые содержат коллекцию категорий.
<c:forEach var="stock" items="${parentItem.stocks}">
<div>Stock id: ${stock.id}</div>
<c:forEach var="category" items="${stock.categories}">
<div style="padding-left:15px">Category id: ${category.id}</div>
</c:forEach>
</c:forEach>
Output:
Stock id: 1
Category id: 1
Category id: 2
Stock id: 2
Category id: 1
Category id: 3
....
Мой проект требует, чтобы моя таблица ManyToMany содержала пользовательский столбец. Насколько я понимаю, мне нужно определить ассоциативную таблицу в коде, чем. Так что теперь родительский элемент содержит коллекцию StocksCategories, которая содержит акции и категории. Итак, с моими требованиями и при рассмотрении этого примера определения таблицы ManyToMany: http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/ это немного меняет ситуацию. Так что теперь цикл через это становится немного сложнее.
<c:forEach var="currentStockCategory" items="${parentItem.stocksCategories}">
<div>${currentStockCategory.stock.id}</div>
<c:forEach var="innerStockCategory" items="${currentStockCategory.stock.stocksCategories}"> // back up the tree
<div>${innerStockCategory.category.id}</div>
</c:forEach>
</c:forEach>
Output:
Stock id: 1
Category id: 1
Category id: 2
Stock id: 1
Category id: 1
Category id: 2
Stock id: 2
Category id: 1
Category id: 3
Stock id: 2
Category id: 1
Category id: 3
....
Как вы можете видеть, он просматривает каждую запись в ассоциативной таблице stocksCategories. Я не хочу этого, мне нужно, чтобы он отображался как первый. Технически говоря, список категорий по-прежнему является частью этого объекта, но как я могу сделать так, чтобы он отображался в jsp? Сама идея восстановления структуры базы данных кажется неправильной.
Я не могу запросить коллекцию акций и сохранить ее отдельно, я должен держать ее подключенной к родительскому объекту.
Я боролся с этим уже около недели, поэтому любая помощь будет высоко ценится! Благодарю.
