1. 程式人生 > >Hibernate對無主鍵表的操作

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

相關推薦

Hibernate操作

Db2 表:Test 只有一個測試欄位:name character(10) Hibernate的hbm檔案:Test.hbm.xml <xml version="1.0"?> <hibernate-mapping> <class

Hibernate中處理的問題

前兩天同事讓我配置一個表的hbm檔案,麻煩的是這個表沒有Primary Key。今天在hibermate.org.cn找到解決方法,明天再去實踐 :) 主鍵是必須有的,要麼是單欄位的id,要麼是組合的composite-id,這一點可以從hibernate-mapping-

hibernate 對映的資料庫

做東西發現數據庫查出來的資料是重複資料,如果有3條記錄就重複第一條記錄3次,後來發現是表無主鍵,且hibernate對映檔案必須有id屬性,搜了搜發現要使用符合主鍵的方法.................以下轉載自一個帖子裡內容: MyEclipse自動生成的那個貌似比

goldengate 同步

scott.bonus表無主鍵無唯一索引,若是在gg源端發出,會導致gg目的端abend,除非目的端複製程序引數檔案有APPLYNOOPUPDATES 或者ALLOWNOOPUPDATES  引數) update scott.t1 set ename='bos' wher

--oracle刪除數據庫)中重復的記錄

數據庫 create 數據庫表 new 刪除 distinct 主鍵 alter bsp --oracle刪除數據庫表(無主鍵)中重復的記錄 1, CREATE TABLE newtable as SELECT distinct * FROM

binlog_format=ROW模式下mysql造成的從庫延遲(卡住)

osi 一個 線程 查詢日誌 事務 發現 沒有 主從架構 應該 場景: MySQL-5.6.30, 主從架構, 只讀從庫的SQL線程卡在某一個事務兩個多小時沒有動過, show processlist發現從庫當時沒有連接和慢查詢語句;show open TABLES wh

使用MyEclipse自動生成Hibernate對映檔案和VO類及生成2個VO類的問題

----使用MyEclipse自動生成Hibernate對映檔案和VO類及無主鍵生成2個VO類的問題 ----MyEclipse 10 1.切換MyEclipse Database Explorer環境,new一個Driver,以Oracle資料庫舉例,在完善資訊並引入j

hibernate對映

在hibernate中,表結構如果沒有主鍵的話,對映時是會把所有的欄位預設為類似的聯合主鍵形式,就到時候就會產生2個實體類,1個人實體ID,另外一個則為真正的資料欄位 在查詢時有可能會產生一些問題, 例如,空指標,獲取的list有長度,但是實際陣列卻為空 這是一個很惱火的問題

oracle中更新方法

首先看下sql server中的一段關於多表更新的update語句 UPDATE table1 SET BankAccount=t_Maintenance_Account.BankAccount FROM table1 INNER JOIN table2 ON (ta

Hibernate框架的生成策略

如果 維護 自己 db2 取值 identity 返回 nat 數字   在Hibernate中,id元素的<generator>子元素用於生成持久化類的對象的唯一標識符,也就是主鍵。Hibernate框架中定義了許多主鍵生成策略類,也叫生成器類。所有的生成器類

hibernate復合

ppi key composite app org idt tca www. blog <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hiberna

hibernate MTM 聯合

hash ret hbm.xml utf oct import override 映射 ping //適用於表裏沒有其他列,只有主鍵 //Course.java實體類 package com.tao.pojo; import java.util.HashSet; imp

利用PHP腳本輔助MySQL數據庫管理2-索引

dbi ble nbsp 管理 item tab count key root <?php $dbi = new DbMysql; $dbi->dbh = ‘mysql://root:[email protected]/coffeetest‘; $ma

hibernate通過pojo自動建操作

1. 多對一 如球員和球隊的關係:多個球員在同一個球隊中。 1.1 類圖 TeamPojo:屬性 + set/get public class TeamPojo{ private Integer teamId; private String teamName; private String team

Hibernate自定義生成策略

在沒使用hibernate註解式之前,我們是需要建立hbm.xml的這樣一個用於對映的配置檔案,而我們的主鍵生成的方式則需要在這個xml的檔案內區定義。   黃色框框內就是我們主鍵生成的多種方式 1. <generator class="cok.zking

hibernate入門2生成策略

1. hibernate的主鍵生成器: generator元素:表示了一個主鍵生成器,它用來為持久化類例項生 成唯一的標識 。 1.1 程式設計師自己控制:assigned 1.2 資料庫控制: identity(標識列/自動增長) sequence 1.3 h

Hibernate Annotation配置生成策略

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                通過annotation來對映hibernate實體的,基於annotation的hibernate主鍵標識為@Id其生成規則由@GeneratedValue設

hibernate學習之生成策略

一、Hibernate最常用的主鍵生成策略為native和uuid。 native可以根據資料庫不同自動選擇sequence、identity和hilo其中的一種。 <id name="uId" column="uId">  <!-- 設定資料庫表id增長策略(自動

Hibernate:識別符號屬性()生成策略全析

資料庫中的主鍵能夠唯一識別一條記錄,它可以是一個欄位也可以是多個欄位的組合。主鍵的主要作用是標識表中的一條記錄,還有和其他表中的資料進行關聯。資料庫中的主鍵型別必須符合唯一性約束和非空約束。作為附加屬性,主鍵應該儘可能簡潔,不要包含過多屬性。根據這個原則,主鍵可以分為自然

OGG對於沒有的處理

問:想用ogg對生產庫做個報表庫。現在生產庫中還有一堆表沒有主鍵(其中有些表的記錄甚至完全一樣),對這些表上的操作容易導致報表庫REPLICAT abended,請問這在OGG配置中是如何避免的?HANDLECOLLISIONS? 答: In order t