2012-04-26 34 views
-1

我想用hibernate(Netbeans)生成java類。 當這些表沒有主鍵時,這似乎是不可能的。定義主鍵,休眠反向工程,Oracle序列

我沒有訪問數據庫,我剛剛發現,他們使用序列,而不是主鍵。

create sequence SEQ_ANY 
minvalue 0 
maxvalue 99999999999999999999 
start with 0 
increment by 1000 
cache 20; 

所以我的問題是,現在,我可以編輯hibernate.hbm還是hibernate.cfg.xml或任何其他文件告訴Hibernate使用哪個類包含一個主鍵? f1。

<table name="myTable"> 
<useThisFieldAsPrimaryKey name="uniqueSequenz"/> 
</table> 

謝謝!

+0

一個序列是一個對象,用於生成一個數字序列,然後可以用它來填充主鍵列,所以不要混淆Oracle中的主鍵和序列 - 它們是相關的但不等同於 – 2012-04-26 08:32:33

+0

聽起來像是「Sierra Madre設計寶藏」的例子 - 「鑰匙?我們沒有鑰匙,我們不需要鑰匙!我不必向您展示任何鑰匙!」。那些不能從歷史中學習的人註定要成爲這樣的人。 – 2012-04-26 11:07:10

+0

真是@BobJarvis。但是,這並沒有回答我的問題:) – djnose 2012-04-30 10:44:46

回答

0

一個序列是一個對象,爲您提供一個主要可能的唯一值。因此你的表可能有一個由單個列組成的主鍵。

然後每個表都有一個主鍵(在最壞的情況下,所有的列一起形成主鍵 - 通常會是一個不好的數據庫設計)。主鍵可以有多個列。

Hibernate喜歡由單個列組成的主鍵。不過,您可以在Hibernate中定義由多個列組成的組合鍵。

您需要表格的模式。如果沒有,你卡住了。

+0

對不起,遲到的答案。我已經知道你寫了什麼,我的問題是,我無法訪問數據庫(所以我不能更改任何表),我知道使用的序列,而不是主鍵。這個設計真的很有趣。 我的問題只是,我可以告訴hibernate的生成過程:「使用那列XYZ作爲PK?」還是我必須寫我自己的類而不是讓它們生成? 謝謝! – djnose 2012-04-30 10:41:21

+0

@djnose - 我懷疑你將不得不編寫自己的課程。 – 2012-04-30 11:56:21