【发布时间】:2019-07-16 05:41:50
【问题描述】:
SalutationMst.java
@Entity
@Table(name = "SalutationMst")
@EntityListeners(AuditingEntityListener.class)
public class SalutationMst {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = true )///////////////id
private Long id;
//@Id
@Column(name = "code", nullable = false, length=15)///////////////code
private String code;
@Column(name = "name", nullable = false, length=15)////////////////name
private String name;
//private long genderid;
@Column(name = "active", nullable = false)////////////////active
private Boolean active;
//@ManyToOne(targetEntity=GenderMst.class,cascade=CascadeType.ALL)
@ManyToOne
//@JoinColumn(name="id", nullable=false)
private GenderMst genderMst;
//getters snd setters
}
这里的String code也应该是pk。字符串 id 是自动生成的,但代码不是。通过来 exp 我需要指定代码是重复的,因为我需要代码作为 pk。
GenderMst.java
@Entity
@Table(name = "GenderMst")
public class GenderMst {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "code", nullable = true,length=15)
private String code;
@Column(name = "name", nullable = true,length=15)
private String name;
//getters and setters
}
【问题讨论】:
-
你没有。你只能有一个主键。不过,您可以有一个复合主键。谷歌就知道了。
-
既然我已经唯一标识了一个称呼,为什么还要让代码成为 PK 的一部分?如果您希望代码是唯一的,请在代码上添加唯一约束。无需将其作为 PK 的一部分即可。
-
我忘记了唯一标识符。谢谢
标签: java hibernate hibernate-mapping nhibernate-mapping