我确信必须有成千上万的例子证明这种关联,但我似乎无法在任何地方找到它。
我有来自亲子的一对多关系和来自Child-Parent的多对一关系:
class Parent {
private Long id;
private String name;
private List<Child> children;
}
class Child {
private Long id;
private String name;
private Parent parent;
}
我期待最终得到两张表如下:
Parent
- id : bigint
- name : varchar
Child
- id : bigint
- parent_id : bigint
- sequence : bigint
- name : varchar
我有正确的想法吗?如果有的话,是否有人知道我需要在我的映射文件中放置什么,以便在删除父项时也是如此。
提前致谢。
詹姆斯
答案 0 :(得分:3)
最终找到了解决方案,虽然我不明白为什么我需要insert="false"
和update="false"
:
<hibernate-mapping>
<class name="foo.Parent" table="Parent">
<id name="id" type="int" column="id">
<generator class="native" />
</id>
<property name="name" type="java.lang.String" column="name" length="50" />
<list name="children" cascade="all">
<key column="parent_id" />
<index column="sequence" />
<one-to-many class="foo.Child" />
</list>
</class>
<class name="foo.Child" table="Child">
<id name="id" type="int" column="id">
<generator class="native" />
</id>
<property name="name" type="java.lang.String" column="name" length="50" />
<many-to-one name="parent" class="foo.Parent" column="parent_id" insert="false" update="false" />
</class>
</hibernate-mapping>