2012-04-26 16 views
-1

ハイバネート(Netbeans)を使用してJavaクラスを生成したいと考えています。 テーブルにプライマリキーがない場合、これは不可能と思われます。主キーの定義、Hibernateリバースエンジニアリング、Oracleシーケンス

データベースにアクセスできず、主キーの代わりにシーケンスを使用していることがわかりました。

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

だから私の質問は、私はhibernate.hbmまたはhibernate.cfg.xmlのか、主キーを含むクラス休止状態を伝えるために、他のファイルを編集することができ、今ですか? f.e.

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

ありがとうございます!

+0

シーケンスは数字のシーケンスを生成するためのオブジェクトであり、プライマリ・キー・カラムを生成するために使用されるため、Oracleのプライマリ・キーとシーケンスを混同しないでください - 関連していますが、同等ではありません –

+0

"シエラ・マードレの宝のデザイン"の例 - "キー?鍵はありません。鍵は必要ありません!私はあなたに何かキーを見せる必要はありません!!" 歴史から学ぶことができないものは、それが運命づけられます。 –

+0

本当に@BobJarvis。しかし、それは私の質問に答えることはできません:) – djnose

答えて

0

シーケンスは、プライマリにユニークな値を提供するためのオブジェクトです。したがって、テーブルにはおそらく単一の列で構成される主キーがあります。

その後、すべてのテーブルは主キー( - 通常は悪いデータベース設計となり、最悪の場合には、すべての列が一緒に主キーを構成する)を持っています。主キーは複数の列を持つことができます。

Hibernateは、単一の列で作られた主キーを好きです。それにもかかわらず、Hibernateでは、複数の列で作成された複合キーを定義できます。

テーブルのスキーマが必要です。もしあなたがつかまえていなければ。

+0

遅く答えて申し訳ありません。私はすでにあなたが書いたことを知っている、私の問題は、私はデータベースにアクセスすることはできません(私はテーブルを変更することはできません)と私は主キーの代わりに使用されたシーケンスを知っている。そのデザインは本当に** KSです。 私の質問は、私は冬眠の生成プロセスを伝えることができます: "それは列XYZをPKとして使用するのですか?"または、私は自分のクラスを作成する代わりに、自分のクラスを作成する必要がありますか? ありがとうございました! – djnose

+0

@ djnose - 自分のクラスを書く必要があると思う。 –

関連する問題