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反向工具的时候,生成的无主键实体类,在查询时结果为空的问题 特注:(本篇文章是针对于那些使用的Spring+Springmvc+hibernate开发框架的同学们的...
  • zzh94352201
  • zzh94352201
  • 2017-04-19 17:04:37
  • 210

数据库中有两个主键的表反向生成的时候会出现俩个实体类

问题现场 今天写项目的时候遇到了一个棘手的问题,我在利用hibernate从数据库反向生成实体类的时候,数据库中有两个主键的表反向生成的时候会出现俩个实体类, 顿时我就懵了,我查看了很多的资料,上...
  • liuxiaogangqq
  • liuxiaogangqq
  • 2013-08-27 14:19:07
  • 3573

hibernate反向生成实体类多一个id类的原因

hibernate反向生成实体类多一个id类的原因: 数据库表没有设置主键,反向工程自动生成XXXId.Java类,设置主键。...
  • fuck487
  • fuck487
  • 2017-01-12 17:52:13
  • 1175

Hibernate操作没有主键数据表

在数据库中中间表往往可能没有主键,而Hibernate检索的时候是根据主键检索的,这样就无法直接检索中间表中的数据。对于这种情况Hibernate会自动生成一个主键辅助类来辅助检索,下面看具体使用方法...
  • u011740475
  • u011740475
  • 2015-01-22 09:22:32
  • 1104

hibernate 连 oracle 没有主键怎么办

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

添加注解后,框架没有自动根据实体类生成数据表,Hibernate

在Hibernate3.2版本之后,开始支持使用JPA注解来替代XML映射配置,极大程度的简化了hibernate的配置,现在使用注解也成为了映射的首选方式。 @Id注解:指...
  • lemmata
  • lemmata
  • 2016-12-24 23:13:32
  • 2514

关于复合主键和反射生成两个实体类的问题

Hibernate复合主键映射 目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 h...
  • liuxiaogangqq
  • liuxiaogangqq
  • 2013-08-27 11:33:06
  • 4355

hibernate 无主键表映射

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

hibernate 映射无主键的数据库表

做东西发现数据库查出来的数据是重复数据,如果有3条记录就重复第一条记录3次,后来发现是表无主键,且hibernate映射文件必须有id属性,搜了搜发现要使用符合主键的方法..................
  • zoucui
  • zoucui
  • 2009-03-04 12:09:00
  • 9101

hibernate联合主键及映射实体类写法

1.联合主键的映射规则 1) 类中的每个主键属性都对应到数据表中的每个主键列。 Hibernate要求具有联合主键的实体类实现Serializable接口,并且重写hashCode与equ...
  • wang_chaoju
  • wang_chaoju
  • 2014-09-09 15:12:15
  • 1937
收藏助手
不良信息举报
您举报文章:Hibernate中对无主键表的操作
举报原因:
原因补充:

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