hibernate 映射无主键和复合主键的数据库表
(1) 复合主键
通常将复合主键相关属性,单独抽取出来,建立一个独立的类
* 必须实现序列化接口
* 必须实现equals和hashcode方法
例如:一个表SYS_PERSON定义如下 firstname,lastname,age
其中主键是复合主键
(firstname+lastname)
1.单独为复合主键建立一个类NamePK.java,此类要序列化,且要实现equals和hashcode方法
此类中包含两个属性
private String firstname;
private String lastname;
2.再建立一个pojo类名为:Person.java。
注意此类中也有两个属性
private NamePK namePK;//这是复合主键的类对象
private int age;
3.在java中写查询时,可以如下:
Object[] params = {"刘","德华"};
ArrayList lists = (ArrayList)personDao.find("from Person ax where ax.namePK.firstname=? and ax.namePK.lastname=?",params); //注意要定义别名
4.在xml映射文件中
<hibernate-mapping>
<class
name="com.user.Person"
table="SYS_PERSON">
<!-- 复合主键 注意此复合主键的名字是Person定义的属性名 -->
<composite-id name="namePK">
<key-property name="firstname" column="FIRST_NAME"/>
<key-property name="lastname" column="LAST_NAME"/>
</composite-id>
<property name="age" column="AGE"/>
</class>
</hibernate-mapping>

被折叠的 条评论
为什么被折叠?



