現在のプロジェクトでは、hibernateを使用して従来のデータベースをマップする必要がありますが、いくつかの問題が発生しています。 データベースは、すべてのドメインオブジェクトの共通のプロパティを含む1つの 'エンティティ'テーブルを使用して設定されます。プロパティには、作成日、所有者(ユーザー)、およびその後にドメインオブジェクトのテーブルで使用される主キーなどが含まれます。hibernateを使用した従来のマッピング
コンテキストの簡単な表現は、このような通りです:私は、アカウントに属するすべての連絡先を含む、自分のアカウントへのマッピングコレクション・マッピングを追加しようとすると、
table entity
- int id
- varchar owner
table account
- int accountid (references entity.id)
table contact
- int contactid (references entity.id)
- int accountid (references account.accountid)
私の問題は、それ自体を示します。私の試みは、以下に煮詰める:
<hibernate-mapping>
<class name="Contact" table="entity">
<id name="id" column="id">
<generator class="native" />
</id>
<join table="contact">
<key column="contactid"/>
<!-- more stuff -->
</join>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="Account" table="entity">
<id name="id" column="id">
<generator class="native" />
</id>
<bag name="contacts" table="contact">
<key column="accountid" />
<one-to-many class="Contact"/>
</bag>
<join table="account">
<key column="accountid"/>
<!-- more stuff -->
</join>
</class>
</hibernate-mapping>
をしかし、私は、エンティティテーブルがアカウントIDという列が含まれていないことを示す、SQLエラーを取得し、アカウントを取得しようとします。なぜこれが起こっているのか分かります。マッピングは、連絡先テーブルを調べたいときに、エンティティテーブルのaccountid列を見つけようとします。私はここで何かを見逃しているのでしょうか、あるいは別の方向からこの問題にアプローチすべきですか?
継承一部のフルACK。 – boutta
私はこの答えを受け入れる傾向があります。しかし、私は最初にもっと多くの返事を待っています。私は答えを受け入れてから受け入れを拒否することは嫌です。少なくとも+1 ;-) –