0

我有以下三个实体:

  1. 财产
  2. 属性_文档
  3. 属性_用户

PropertyProperty_Document具有一对多的关系。
Property并且Property_User有一对一的关系。

在数据库级别,Property_User 具有外键“property_id”,返回到 Property 表。

我正在使用注释来定义实体之间的映射和关系。

属性.java

public class Property {
    //.....
    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="property_id")
    private List<PropertyDocuments> docs;

    @OneToOne(cascade=CascadeType.ALL)
    private PropertyUser owner;
    //....
}

属性用户.java

public class PropertyUser {
    @Id
    private int id;

    @column
    private String name;
    //......
}

当它获取属性时,文档列表会成功获取,但是当它尝试获取用户信息时,它会显示在错误消息下方。

column: owner_id doesn't exist.

请帮忙。谢谢。

4

1 回答 1

2

您需要“属性”表中的一列来保存它引用的用户的 ID。由于您没有在映射中指定任何列,Hibernate 使用默认列名称,即 owner_id(属性名称后跟它引用的列名称)。如果你想使用另一个列名,你必须告诉 Hibernate:它不能神奇地猜到它:

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "the_column_containing_the_id_of_the_referenced_user")
private PropertyUser owner;
于 2012-06-10T13:13:41.510 回答