我正面临以下情况:
表存储:| Id | ... | CostCenterNumber |
表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:提供了错误类型的ID,用于
类datamodel.Store。预期:类java.lang.String,得到了类
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”属性可知道如何映射此关联。