使用复合键

时间:2017-11-24 16:35:13

标签: hibernate

我有这张桌子

enter image description here

我有另一个表,它只在M_CODE类型上使用CODE

所以这被映射到 这两个班级

@Entity
@Table(name = "PIS_DOMAIN_DETAIL")
public class Domain implements Serializable{

@Id
DomainId id;

@Column(name = "CODE" , insertable = false, updatable = false)
private Integer code;
@Column(name = "COM_NO")
private Integer comNo;
@Column(name = "DESC_A")
private String descA;
@Column(name = "DESC_L")
private String descL;
@Column(name = "TIMESTAMP")
private Date timestamp;
@Column(name = "USER_ID")
private Integer userId;

这是可嵌入的

@Embeddable
public class DomainId implements Serializable{
@Column(name = "M_CODE")
private Integer mCode;
@Column(name = "CODE")
private Integer code;}

所以在其他只使用WF_STATUS列中的代码的表中我创建了这个

// this is select id.code from Domain  where id.mCode=35
@Column(name = "WF_STATUS") //that recievce CODE from domain entity
private Integer wfStatus;

@ManyToOne
@JoinColumn(name = "WF_STATUS", referencedColumnName = "CODE",
    insertable = false, updatable = false )
@Where(clause=" id.mCode = 35 ")
Domain status;

但是出了这个错误

  

找到了具有给定标识符的多行:com.project.entities.Domain@50bc3219,类:com.project.entities.Domain

我如何编辑我的地图以接受此案例..提前感谢...

1 个答案:

答案 0 :(得分:0)

您有一个重复的列,您应该决定code列是否在DomainId中作为复合键的一部分(仅在Domain类中)。