sundful 发表于 2013-1-13 18:59:20

Hibernate对无主键表的操作

Db2 表:Test 只有一个测试字段:name character(10)
Hibernate的hbm文件:Test.hbm.xml
<xml version="1.0"?>   <hibernate-mapping>    <class name="Test" table="test">   <composite-id name="testpk" class="Testpk" unsaved-value="any">       <key-property name="name" column="name" type="string"/>         composite-id>      <class>   hibernate-mapping>    Test.java
import java.io.Serializable;public class Test implements Serializable{ private Testpk testpk;public void setTestpk(Testpk value){this.testpk=value; }public Testpk getTestpk(){return this.testpk; } }Testpk.javaimport java.io.Serializable; public class Testpk implements Serializable{private String name; public String getName() {return this.name; }public void setName(String value){this.name=value; }public boolean equals(Object other) {       Testpk that = (Testpk) other;            return this.name.equals(that.name);       }         /**   * Returns the hash code for the key.   */      public int hashCode() {            return (this.name.hashCode());            } } 
测试代码:
Test t=new Test();Testpk tpk=new Testpk();tpk.setName("test000000");t.setTestpk(tpk);session.save(t); 
最后值得注意的是当要load的时候,不能简单的Test t=(Test)session.load(Test.class,"test000000"); 而使用一个Testpk作为一个实体类的标识符。
所以应该这么写:
Testpk tpk=new Testpk(); tpk.setName("test000000"); Test t=(Test)session.load(Test.class,tpk); 
页: [1]
查看完整版本: Hibernate对无主键表的操作