gpt4 book ai didi

java - Hibernate 一对一映射问题

转载 作者:行者123 更新时间:2023-12-02 07:45:18 25 4
gpt4 key购买 nike

我有以下三个实体:

  1. 属性(property)
  2. Property_Document
  3. Property_User

PropertyProperty_Document 具有一对多关系。
PropertyProperty_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;
//....
}

PropertyUser.java

public class PropertyUser {
@Id
private int id;

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

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

column: owner_id doesn't exist.

请帮忙。谢谢。

最佳答案

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

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "the_column_containing_the_id_of_the_referenced_user")
private PropertyUser owner;

关于java - Hibernate 一对一映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com