hibernate 映射无主键和复合主键的数据库表

来源:互联网 发布:淘宝店铺等级划分 编辑:程序博客网 时间:2024/06/05 17:57

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>

原创粉丝点击