Hibernate中怎么设置主键,比如我有一个表除了字段ID需要唯一之外。还要有一个登陆用户名也要唯一。我看了一下联合主键是可以其中一个不唯一的。我用annocation怎么设置?只有一个主键不能满足我的需要。
------解决思路----------------------
你可以加一个没有业务逻辑的主键,其他的设置为普通属性,然后设置不唯一unique就可以了,不知道这样子实现是否符合你的要求。
------解决思路----------------------
一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。
------解决思路----------------------
你的hibernate是手写的?如果是映射的话你会发现,把2个字段当主键,hibernate会自动把2个字段映射成一个类类名一般是 表名+"ID"
然后在原映射类内的主键get方法改为添加
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "主键1", column = @Column(name = "表内内主键名1")),
@AttributeOverride(name = "主键2", column = @Column(name = "表内主键名2"))})
public 表名 get 表名+"ID"(){
return this.表名+"ID";
}
新生成的 表名+"Id"类你什么都不用管,把主键的的字段加上在get方法上按照一般字段注解方法注解就行了不用声明主键(如果有自增的什么的请自己测试,我没遇到过这类需求不清楚这样声明会不会有问题),类内写上无参构造,和满参构造