Hibernate联合主键:
1.主键类UserId实现Serializable接口,重写hashCode()和equals()方法,使用@Embeddable注解修饰
package com.jin.domain; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Embeddable; @Embeddable public class UserId implements Serializable { private String firstName; private String lastName; @Column(name="first") public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } @Column(name="last") public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((firstName == null) ? 0 : firstName.hashCode()); result = prime * result + ((lastName == null) ? 0 : lastName.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; UserId other = (UserId) obj; if (firstName == null) { if (other.firstName != null) return false; } else if (!firstName.equals(other.firstName)) return false; if (lastName == null) { if (other.lastName != null) return false; } else if (!lastName.equals(other.lastName)) return false; return true; } }
2.实体类User
主键变量用@EmbeddedId注解修饰
@AttributeOverride(name="firstName", column=@Column(name="fld_firstname"))
将主键类UserId中变量firstName所对应列名重新命名为fld_firstname
package com.jin.domain; import javax.persistence.AttributeOverride; import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; @Entity public class User { private UserId id; private Integer age; @EmbeddedId //重写firstName变量在数据库表中所对应的列名 @AttributeOverride(name="firstName", column=@Column(name="fld_firstname")) public UserId getId() { return id; } public void setId(UserId id) { this.id = id; } @Column public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
3.自动生成的数据库表
主键是fld_firstname,last联合主键,firstname的列名有我们自定义的first被替换为fld_firstname
5.xml配置
<class name="User"> <composite-id name="id" class="UserId"> <key-property name="firstName" column="fld_firstname"/> <key-property name="lastName"/> </composite-id> </class>
相关推荐
hibernate中用到联合主键的看看就会了很棒的资料
Hibernate联合主键,MyEclipse的例子
hibernate的联合主键怎么设置、hibernate的联合主键怎么设置.doc
主要介绍了java hibernate使用注解来定义联合主键的相关资料,需要的朋友可以参考下
联合主键用Hibernate注解映射方式主要有三种: 第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键...
hibernate复合主键的实例,hibernate复合主键的实例。
复合主键映射 <br>通常将复合主键相关属性,单独抽取出来,建立一个独立的类 * 必须实现序列化接口 * 必须实现equals和hashcode方法 采用标签进行映射,其它属性采用正常映射
NULL 博文链接:https://liuna718-163-com.iteye.com/blog/748089
请更名为 Hibernate复合主键.part2.rar
http://blog.csdn.net/e421083458/article/details/8794127 该源码为Hibernate教程配套源码
NULL 博文链接:https://cdxs2.iteye.com/blog/1932507
Hibernate 系列教程 单向一对多
Hibernate实体关系映射
第1课 课程内容 6 第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 ...三、 联合主键 24 1、xml方式 24 2、annotation方式 27 第14课 Hibernate核心开发接口(重点) 29 ........
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
复合(联合)主键映射(hibernate_composite) 27 集合(collection)映像 (hibernate_collection) 28 Hibernate 对数据库的并发支持 30 悲观锁(hibernate_pessimistic) 30 乐观锁(hibernate_optimistic) 32 HQL...
Hibernate关联关系配置,一对一,一对多,多对多,联合主键等的配置
依赖对象(Dependent objects) 组件(Component)是一个被包含的...比如,OrderLine类具有一个主键,这个主键依赖于Order的(联合)主键。 insert="false" update="false"> .... </class>
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...