有没有人知道hibernate映射文件相当于@JoinColumns注释的referencedColumnName属性,如下所示:
@ManyToOne
@JoinColumns ({
@JoinColumn(name="FIELD_0", referencedColumnName="A", insertable=false, updateable=false),
@JoinColumn(name="FIELD_1", referencedColumnName="B", insertable=false, updateable=false),
@JoinColumn(name="FIELD_2", referencedColumnName="C", insertable=false, updateable=false),
@JoinColumn(name="FIELD_3", referencedColumnName="D", insertable=false, updateable=false)
移动到注释不是一个选项,我们需要使用复合键设置外键引用,其中表名之间的列名不同。
提前致谢。
答案 0 :(得分:1)
我一直在研究同样的问题。在我解决之前我看到了你的问题,我想我会回到这里帮助你。我正在使用4.2.2。
我将这些名称归类,但我认为你会明白这一点。 “父”类包含“子”对象的集合,这意味着“子”表对“父”表具有外键约束。
密切注意以下事项: 1.集合键中列的顺序必须与composite-id中的顺序匹配。 袋子集合上的属性非常重要。我下面的内容是为我工作。
<class name="ParentClass" table="parent_table">
<composite-id name="parentCompositeId" class="ParentCompositeId">
<key-property name="pkName1" column="pk_name_1" type="integer"/>
<key-property name="pkName2" column="pk_name_2" type="string"/>
<generator class="assigned" />
</composite-id>
<property name="name" column="name" type="string" />
<!-- etc... -->
<bag name="childObjects" table="child_table" cascade="all" lazy="false" fetch="select">
<key not-null="true">
<column name="fk_child_name_1"/>
<column name="fk_child_name_2"/>
</key>
<one-to-many class="ChildClass"/>
</bag>
</class>
此外,不要尝试对“child”类或其映射配置中的关联执行任何操作。只需映射非FK属性,让hibernate处理FK。