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

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值