Hiberanate联合主键设置
首先建表 create table student ( name varchar(20), phone int, age int, constraint primary key(name,phone) )
student表采用name&phone两个字段为联合主键。
然后在eclipse中建立工程,并添加hibernate组件。
然后利用hibernate reverse engineering 从student表反转生成 student.hbm.xml 配置文件和 studentId 与 student两个类(上星期刚开始学hibernate的时候可能是不小心设置了表的联合主键,生成了studentId 与 student两个类,我不明白其中的原因。问了下老师,也没有得到好的答案。让我郁闷了很久)
studentId类部分代码;
public class StudentId implements java.io.Serializable //主键类必须实现该接口 { /**该类实际上是从student联合主键中抽象出来的 ,将name和phone单独设计为一个类**/ private String name; private Integer phone; //为了程序清晰便于迅速阅读,省去了千篇一律的构造函数和getter、setter方法:) /**主键类还需要实现下面两个方法,当然这些工作都是hibernate帮我们完成了,很多时候不得不感叹框架功能确实很强大**/ public boolean equals(Object other){ //省略 } public int hashCode(){ //省略} } studentId类代码: 实体类
public class Student implements java.io.Serializable { //直接将联合主键类StudentId作为成员,而不是直接将 name,phone做为成员 private StudentId id; private Integer age; //同样省去了构造函数和getter、setter方法:) }
Student.hbm.xml部分代码如下:
原文地址: http://blog.sina.com.cn/s/blog_453bed0d01000ami.html