我有三个实体如下:
Property
和Property_Document
有一对多的关系
Property
和Property_User
有一对一的关系。
在数据库级别,Property_User具有外键“property_id”,返回Property表。
我正在使用注释来定义实体之间的映射和关系。
Property.java
public class Property {
//.....
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="property_id")
private List<PropertyDocuments> docs;
@OneToOne(cascade=CascadeType.ALL)
private PropertyUser owner;
//....
}
PropertyUser.java
public class PropertyUser {
@Id
private int id;
@column
private String name;
//......
}
当它获取属性时,文档列表成功获取,但当它尝试获取用户信息时,它会显示错误消息。
column: owner_id doesn't exist.
请帮忙。感谢。
答案 0 :(得分:2)
您需要“属性”表中的列来保存其引用的用户的ID。由于您没有在映射中指定任何列,因此Hibernate使用默认列名称,即owner_id(属性的名称,后跟它引用的列的名称)。如果你想使用另一个列名,你必须告诉Hibernate:它不能神奇地猜测它:
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "the_column_containing_the_id_of_the_referenced_user")
private PropertyUser owner;