hibernate 无主键表映射

本文介绍了Hibernate中如何处理无主键或者复合主键的映射问题。通过一个具体的User实体类示例,展示了使用@EmbeddedId和@AttributeOverrides注解的方式进行复合主键映射,并强调了依赖的类需要实现Serializable以及equals()/hashCode()方法。同时,文中提到了可能出现的查询结果为null的问题,其原因是联合主键包含可能为空的字段,解决办法是将空值字段排除在联合主键之外。
摘要由CSDN通过智能技术生成

Hibernate 无主键表(复合主键)映射

1.     为什么要有复合主键映射

在现实中我们可能会遇到许多表可能是没有主键的,那么我们对其做映射后使用会是什么样的结果?能正常得到我们想要的吗?结果应该是得不到想要的结果,而得到的可能会是如下的报错:

Caused by:org.hibernate.AnnotationException: No identifier specified for entity: xxx.xxx.xxx

这个结果告诉我们:Hibernate映射表是需要主键的。

所以复合主键映射就应运而生了。

2.     注意点

复合主键使用一个可嵌入的类作为主键表示,因此你需要使用@Id@Embeddable两个注解.还有一种方式是使用@EmbeddedId注解.当然还有一种方法那就是——使用@IdClass注解。具体请查看【hibernate-annotations-3.4.0.GA 2.2.6.映射复合主键与外键】。

当然,只需要选择其中的一种就可以了。^_^

注意所依赖的类必须实现 serializable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值