双主键为什么不能设置成功呢?
我想设置两个主键,一个是int类型的,一个是String类型的.但是我把@GenericGenerator这个注解加在String类型的属性上了也设置了长度,但是DDl显示依然是自动增长.而且我int类型的自动增长没有生效.然后数据库变没有创建成功.大家能帮我看看是什么原因吗?谢谢了,


我想设置两个主键,一个是int类型的,一个是String类型的.但是我把@GenericGenerator这个注解加在String类型的属性上了也设置了长度,但是DDl显示依然是自动增长.而且我int类型的自动增长没有生效.然后数据库变没有创建成功.大家能帮我看看是什么原因吗?谢谢了,


2017-07-03
你要设置这两个主键的话,需要把这两个主键单独放到一个主键类中啊,亲,例如下面这样:
/*
* 学生主键类
*/
@Embeddable
public class StudentPk implements Serializable{
/**
* 生成一个版本序列号
*/
private static final long serialVersionUID = 1L;
//身份证Id号码
@Column(length=18)
private String personId;
//学号
@Column(length=8)
private String studentId;
public StudentPk() {
super();
}
public StudentPk(String personId, String studentId) {
super();
this.personId = personId;
this.studentId = studentId;
}
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return super.equals(obj);
}
}最后在实体类中写,如下:
@EmbeddedId
private StudentPk pk;
public StudentPk getStudentPk() {
return pk;
}
public void setStudentPk(StudentPk pk) {
this.pk = pk;
}你再去调试调试,祝你成功,学有所成,步步高升,开开心心,啦啦啦啦啦~~
举报