我正面临以下情况:


  表存储:| 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”属性可知道如何映射此关联。

09-17 02:51