【发布时间】:2014-11-16 02:22:54
【问题描述】:
我在两个类之间有一对多的关系,如下所示:
class Parent {
List<Child> children;
}
class Child {
String name;
}
我正在使用.hbm.xml 文件来定义我从Java 类到表的映射。像这样的:
<class name="Parent" table="parent">
<list name="children">
<key column="parent_id" />
<list-index column="idx" />
<one-to-many class="Child" />
</list>
</class>
<class name="Child" table="child">
<property name="name" type="string" />
</class>
效果很好。
现在我想在Child.parent_id 列上创建一个列索引(不是列表索引)。似乎<one-to-many> 标签不允许任何嵌套的<column> 标签,所以我尝试向Child 映射添加双向关联,如下所示:
<many-to-one name="parent" insert="false" update="false">
<column name="parent_id" index="true">
</many-to-one>
但我得到一个例外:
org.hibernate.PropertyNotFoundException: Could not find a getter for parent in class Child
那么,如何在Child.parent_id 列上创建索引而不向Child 类添加parent 字段?我正在使用 Hibernate 3.5.6 和 PostgreSQL 9.3。
【问题讨论】:
-
您如何想象在不存在的列上有索引?如果要进行双向关联或索引,则需要在子类中有 parent_id。
-
有一个
parent_id列。它似乎是由<one-to-many>标签创建的。
标签: java hibernate postgresql orm