Hibernate中怎么用annocation设置主键?

颖辉小居 2015-10-03 11:37:35
Hibernate中怎么设置主键,比如我有一个表除了字段ID需要唯一之外。还要有一个登陆用户名也要唯一。我看了一下联合主键是可以其中一个不唯一的。我用annocation怎么设置?只有一个主键不能满足我的需要。
...全文
142 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bartholomew4 2015-10-08
  • 打赏
  • 举报
回复
上面这种方法也可以适用于视图映射
bartholomew4 2015-10-08
  • 打赏
  • 举报
回复
你的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方法上按照一般字段注解方法注解就行了不用声明主键(如果有自增的什么的请自己测试,我没遇到过这类需求不清楚这样声明会不会有问题),类内写上无参构造,和满参构造
panzhixiong_cn 2015-10-07
  • 打赏
  • 举报
回复
一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。
qq_20062767 2015-10-03
  • 打赏
  • 举报
回复
你可以加一个没有业务逻辑的主键,其他的设置为普通属性,然后设置不唯一unique就可以了,不知道这样子实现是否符合你的要求。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧