【发布时间】:2012-03-03 19:49:53
【问题描述】:
我在处理 @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
....
如您所见,它正在遍历stockCategories 关联表中的每个条目。我不想要那个,我需要它像第一个那样显示。从技术上讲,类别列表仍然是该股票对象的一部分,但我怎样才能让它在 jsp 中以这种方式显示呢?备份数据库结构的整个想法感觉不对。
我无法查询库存集合并单独存储它,我必须保持它与父对象的连接。
我已经为此奋斗了大约一个星期,因此非常感谢任何帮助!谢谢。
【问题讨论】:
标签: java database hibernate jsp hibernate-mapping