2009-05-21 7 views
10

可能な重複せずに、テーブルまたはビューのHibernateマッピングを行うには:
Hibernate and no PKどのように主キー

誰もがどのように主キーがないテーブルまたはビューのマッピングを休止行うために知っていますか?

+2

がhttp://stackoverflow.com/questions/767277/hibernate-and-noを見ます-pk – Schildmeijer

答えて

10

Hibernateがプライマリキーなしでテーブルをマッピングできるとは思わない... Hibernateが行を一意に識別できるカラムなしで更新を実行する方法について考える。

私は、すべての列でコンポジットキーを使用することになりますが、主キーを追加するほうがはるかに優れていると思います。

+0

あなたは正しいと思います。また、(すべての列の)コンポジットキーはプライマリキーである必要がありますので、より合理的なコンポジットキーを作成したり、プライマリキーとして一意に識別する列を選択する方がよいでしょう。 –

+7

私はそれが読み込み専用の状況ではあまりにも重要なことを知らない(udpates)。 – javamonkey79

+4

私はプライマリキーのないビューから選択すると、何をする必要がありますかoupdateビューを表示したくないですか? – DeveloperX

5

これは、データを読み込んでいるとき(書き込みしていないとき)にのみ行います。あなたはOracleなどのDBを持っている場合、あなたは

select DOKUMENT.*, ROWID from DOKUMENT 

→のようなステートメントを持つことができるので、あなたは、Hibernateマッピングにこのステートメントを追加することができます。

<id column="ROWID" type="string" /> 

は、その後、あなたが

として他のすべての列を定義します
<property... 

あなたは、リバースエンジニアリングウィザードを使用するときは、することができます

  1. 検索
  2. 、複合キーのタグを削除し、プロパティのキープロパティを交換し、
  3. 挿入行の上
+0

これに応じて、挿入/更新コードを変更する必要があります – ATorras