1. 程式人生 > >Hibernate中處理無主鍵表的問題

Hibernate中處理無主鍵表的問題

前兩天同事讓我配置一個表的hbm檔案,麻煩的是這個表沒有Primary Key。今天在hibermate.org.cn找到解決方法,明天再去實踐 :)

主鍵是必須有的,要麼是單欄位的id,要麼是組合的composite-id,這一點可以從hibernate-mapping-2.0.dtd的第37行看的出來。還有參考手冊的4.1.4節也說:“Mapped classes must declare the primary key column of the database table.”想象一下,沒有主鍵,session如何load一個class呢?
id應該是必須有的,但id不一定要對應資料庫表的主鍵,只要能唯一標識一條紀錄就行。如果你的表沒有主鍵,那你可以選取若干個column作為composite-id(大不了用所有的column),但很可能會帶來很多不便。

相關推薦

Hibernate處理的問題

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

Hibernate的操作

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

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

oracle更新方法

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

hibernate 對映的資料庫

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

如何獲取數據自增的值

兩個 包含 enc gpo into int acl sql emp 一、MySql數據庫   當向數據庫中插入一條數據的時候,默認是拿不到自增主鍵的值的, 需要設置如下兩個屬性才可以拿到主鍵值!   設置userGeneratedKeys屬性值為true:使用自動增長的主

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

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

當資料庫不存在

select @rownum :[email protected] + 1 AS rowNum, a.* from (select @rowNum := 0) r, tableName a order by a.fileName 上面的查詢語句中顯示的內容就是將rowNum作為一個

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

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

Oracle查詢沒有

SELECT * FROM user_tables A WHERE NOT EXISTS ( SELECT * FROM user_constraints b WHERE A .table_name = b.table_name AN

OGG對於沒有處理

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

sqlserver檢視沒有值但是想進行分組計數查詢時該怎麼處理

sqlser的view平時用的很多了,但是一直都是當做一個虛擬表格來使用。 最近碰到一個需求,要求把原有的資料進行分組查詢,同時還需要進行計數統計。 原有邏輯就是通過entity和view配合直接顯示在頁面上,在view裡沒有主鍵值,所以顯示新資料時總是達不到要求, 因此將對映表中的ID加入view裡,

hibernate對映

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

如何在資料庫建立複合

(即多個欄位同時作為主鍵)主鍵是資料庫表的一個重要屬性,建立主鍵可以避免表中存在完全相同的記錄,也就是說主鍵在一張表中的記錄值是唯一的。 建立主鍵有兩種方法:一種是在資料庫提供的GUI環境中建立,另一種是通過SQL語句執行建立,下面分別介紹。    1.在資料庫提供的GUI環境中建立(以SQL7為例)。 輸

如何在sqlserver資料庫建立複合

主鍵是資料庫表的一個重要屬性,建立主鍵可以避免表中存在完全相同的記錄,也就是說主鍵在一張表中的記錄值是唯一的。 建立主鍵有兩種方法:一種是在資料庫提供的GUI環境中建立,另一種是通過SQL語句執行建立,下面分別介紹。 1.在資料庫提供的GUI環境中建立(以SQL7為例)。

Hibernate複合其中有是引用外來情況下的配置方法

這個有兩種配置方式。一種是對映一個也是複合主鍵一部分的外來鍵列,通過一般的<many-to-one>元素,並用insert="false" update="false"禁用該列的任何Hibernate插入或者更新。另一種方式是<key-many-to-on

oracle 結構、表字段、資料、約束的相關操作

1.表字段的的操作1)增加欄位語法:alter table tablename add (column datatype [default value] [null/not null] ….);(比較增加主鍵約束:alter table table_name add cons

SQL 一個可不可以沒有

一個 cnblogs 兩個 簡單的 www. best 主鍵 htm logs 主鍵的作用: 1)保證實體的完整性; 2)加快數據庫的操作速度 3)在表中添加新記錄時,數據庫會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重復。 4) 數據庫自動按主鍵值的順序

Hibernate處理沒有的檢視

檢視的詳情 SELECT TEST_FLIGHT_TIME AS TESTTIME,JIHAO AS JIHAO,'1' AS