Hibernate中对无主键表的操作

原创 2004年07月06日 10:36:00

Db2 表:Test 只有一个测试字段:name character(10)

Hibernate的hbm文件:Test.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<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.java

import 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);

 

环境DB2、Eclipise、Hibernate2测试成功

 

hibernate 无主键表映射

Hibernate 无主键表(复合主键)映射 1.     为什么要有复合主键映射 在现实中我们可能会遇到许多表可能是没有主键的,那么我们对其做映射后使用会是什么样的结果?能正常得到我们想...
  • zhpengfei0915
  • zhpengfei0915
  • 2014年03月06日 17:23
  • 1559

Hibernate多对多之中间表只有两个外键做联合主键

一般情况下,多对多的关联关系是需要中间表的; 情况一:如果中间表仅仅是做关联用的,它里面仅有2个外键做联合主键,则使用ManyToMany(不用写中间表的Model,只需要写出两张主表的mode...
  • u014038534
  • u014038534
  • 2015年12月02日 21:26
  • 1739

hibernate_主键设置

hibernate的映射文件可以帮我们管理表的主键。 首先奉上USER表的映射文件,表的有2个属性:id和name ...
  • StarInLearning
  • StarInLearning
  • 2015年02月12日 23:28
  • 487

hibernate 连 oracle 没有主键怎么办

这里记录hibernate中组合主键的annotation方式。 hibernate-annotations说明文档中有说到组合主键使用annotation的方式实现,如下几种 下面是定义组合主键...
  • renzhe_liubin
  • renzhe_liubin
  • 2017年04月06日 14:04
  • 464

hibernate 注解 ,视图无主键,怎么配置联合主键

我之前用myeclipse 反向生成了2个pojo,但是hql查询有问题 生成的类: Service类: 我传入一个值查询的时候: 这好像是我底层的 sessionFa...
  • shuangdangshen0998
  • shuangdangshen0998
  • 2017年01月02日 16:02
  • 1099

Hibernate学习-04:CRUD(增删改查)操作之根据主键查询

上一讲的入门案例,我们使用了Hibernate框架的添加功能,此处不再赘述。这一讲我们继续介绍Hibernate的查询、更新、删除操作。 准备工作:实体类、数据库准备同上一讲入门案例 1、查询 1.1...
  • Dove_Knowledge
  • Dove_Knowledge
  • 2017年04月19日 09:58
  • 625

hibernate的主键生成策略包括那些

hibernate 主键生成策略有三种:序列 自增 通用 1、序列 sequence 只能在oracle 和 DB2中使用 2、自增 ide...
  • zhaoyazhi2129
  • zhaoyazhi2129
  • 2013年05月16日 08:18
  • 1010

hibernate 主键一对一 外键一对一

主键一对一 就是两张表主键相同的一一对应,比如说你的id是1 ,我的id是1, 两个就是对应的关系,这就叫做数据关联,主键一对一的情况相当于一个人只有一个身份证,一一对应,不能有多 但是主键一对一...
  • huangning1995
  • huangning1995
  • 2017年01月26日 13:44
  • 153

hibernate的一对一主键双向映射关系和外键双向映射关系(一)

主键关联的重点是关联的两个表共享一个主键值。本例中采用,一个单位在网上的一个系统中注册会员。 1,会员数据保存在会员表company中,每个会员的登录账号保存在表login中; 2,一个会员只有一...
  • tuke_tuke
  • tuke_tuke
  • 2015年11月12日 23:07
  • 2165

hibernate使用配置文件创建联合主键往MySQL数据库插入数据

hibernate联合主键映射MySQL数据库
  • xingzhemoluo
  • xingzhemoluo
  • 2014年09月27日 22:20
  • 1487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate中对无主键表的操作
举报原因:
原因补充:

(最多只允许输入30个字)