我试图弄清楚如何通过一个包含一些元数据的连接表来映射两个表之间的关系。简而言之,三个表格代表一个表单的页面,每个页面可以包含任意数量的元素(问题)。出于某种原因,最初的开发人员决定元素可以用于多个表单。这意味着用于对页面上的元素进行排序的权重列位于连接表中。
我如何在 XML 中映射它?(注释不是一种选择。)
对于连接表,我想是这样的:
<class name="com.foo.bar.model.db.ApplicationPageElements"
table="APPLICATION_PAGE_ELEMENTS">
<composite-id name="id" class="com.foo.bar.model.db.ApplicationPageElementsKey">
<key-property name="pageId" column="page_id"/>
<key-property name="elementId" column="element_id"/>
</composite-id>
<property name="weight" type="java.lang.Long">
<column name="WEIGHT" precision="0" />
</property>
</class>
我的直觉让我想从 ApplicationPage 方面做这样的事情:
<set name="applicationElements" table="applicationPageElement">
<key column="page_id"/>
<many-to-many column="element_id" unique="true"
class="com.foo.bar.model.db.ApplicationElements" />
</set>
这就是我所有的下巴松弛,盯着屏幕,抽泣的地方。
我们使用 .hbm.xml 文件来映射我们的数据库。我们还决定不更改我们的数据库。
关于如何在 XML 中映射它的任何想法?