hibernate联合主键的使用

转自:http://chengyue2007.javaeye.com/blog/419408

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="classweb.model.po">
<class
   name="Users"
   table="USERS"
>
   <meta attribute="sync-DAO">false</meta>
   <composite-id name="id" class="UsersPK">
    <key-property
     name="name"
     column="NAME"
     type="string"
    />
    <key-property
     name="tel"
     column="TEL"
     type="string"
    />
   </composite-id>

   <property
    name="age"
    column="AGE"
    type="string"
    not-null="false"
   />

</class>
</hibernate-mapping>

Java代码 :
  1. 以下代码生成一个Users对象,并保存.   
  2.   
  3.      Session s = HibernateUtil.currentSession();   
  4.      Transaction t = s.beginTransaction();   
  5.      UsersPK usersPK = new UsersPK();   
  6.      usersPK.setName(1);   
  7.      usersPK.setTel(4);   
  8.      Users user = new Users();   
  9.      user.setAge("19");   
  10.      user.setId(usersPK );   
  11.      s.save(user);   
  12.      t.commit();   
  13.      HibernateUtil.closeSession();   
  14.      System.out.println("insert success!");   
  15.   
  16. 更新.   
  17.   
  18.      Session s = HibernateUtil.currentSession();   
  19.      Transaction t = s.beginTransaction();   
  20.      UsersPK usersPK = new UsersPK();   
  21.      usersPK.setDbid(1);   
  22.      usersPK.setRowUID(4);   
  23.      Users user = (Users)s.load(Users.class, usersPK);   
  24.   
  25.      user.setAge("20");   
  26.      s.update(user);   
  27.      t.commit();   
  28.      HibernateUtil.closeSession();   
  29.      System.out.println("update success!");   
  30.   
  31. 删除.   
  32.   
  33. Session s = HibernateUtil.currentSession();   
  34.      Transaction t = s.beginTransaction();   
  35.      UsersPK usersPK = new UsersPK();   
  36.      usersPK.setDbid(1);   
  37.      usersPK.setRowUID(4);   
  38.      Users user = (Users)s.load(Users.class, usersPK);   
  39.   
  40.      s.delete(user);   
  41.      t.commit();   
  42.      HibernateUtil.closeSession();   
  43.      System.out.println("delete success!");   
  44.   
  45. 最后讲select   
  46.   
  47. 如果对复合主键中的一个主键进行查询,必须   
  48.   
  49.      Session s = HibernateUtil.currentSession();   
  50.      Criteria c = s.createCriteria(Users.class);   
  51.      c.add(Restrictions.eq("id.name", "levi"));   
  52.      List list = c.list();   
  53.      Iterator iter = list.iterator();   
  54.     while (iter.hasNext()) {   
  55.        Users item = (Users) iter.next();   
  56.        System.out.println("name:" + item.getId().getName());   
  57.        System.out.println("tel;" + item.getId().getTel());   
  58.        System.out.println("age:" + item.getAge());   
  59.      }   
  60.      HibernateUtil.closeSession();   
  61.      System.out.println("select success!");  
原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100574.html