java - Hibernate 通过非 id 列关联两个实体

标签 java hibernate orm mapping

我面临以下情况:

Table Store: |Id|...|CostCenterNumber|

Table MasterData: |dennskdnr|...|

我当前的映射如下所示

@Entity
@Table(name = "Store")
public class Store implements Identifiable {
[...]
    @OneToOne(optional = true)
    @JoinColumn(name = "CostCenterNumber", insertable = false, updatable = false)
    private MasterData masterData;
[...]
}

@Entity
@Table(name = "MasterData")
public class MasterData {
[...]
    @OneToOne(optional = true)
    @JoinColumn(name = "dennskdnr")
    private Store store;
[...]
}

导致我出现以下异常:

org.hibernate.TypeMismatchException: Provided id of the wrong type for class datamodel.Store. Expected: class java.lang.String, got class java.lang.Integer

最佳答案

以下是关联的映射方式:

@Entity
@Table(name = "Store")
public class Store implements Identifiable {

    @OneToOne(optional = true)
    @JoinColumn(name = "CostCenterNumber", referencedColumnName="dennskdnr")
    private MasterData masterData;

}

@Entity
@Table(name = "MasterData")
public class MasterData {

    @OneToOne(optional = true, mappedBy = "masterData")
    private Store store;

}

请记住:在双向关联中,始终有一个所有者方(定义关联的映射方式)和一个反方(使用必须使用 mappedBy 属性来表示:我是反方,查看另一个实体中的“masterData”属性就知道这个关联是如何映射的

关于java - Hibernate 通过非 id 列关联两个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246105/

相关文章:

javascript - 生成的excel文件url

java - 你在使用 Hibernate 时遇到过什么样的困难

java - 如何使用 Spring MVC 更新我当前的用户数据?

Hibernate 命名实体的自动映射

php - 无法使用 Propel 2(找不到类)

java - Hibernate 多对一外键默认值 0

java - 尝试使用通知

java - 使用 Java 更新 kafka 中特定主题的 TTL

java - 无法访问我的阵列

c# - 使用 Dapper 查询复杂对象