私はテーブルユーザーを持っています
CREATE TABLE "USERS" (
"ID" NUMBER NOT NULL ,
"LOGINNAME" VARCHAR2 (150) NOT NULL )
2番目のテーブルSpecialUsersがあります。SpecialUsersテーブルでUserIdを2回発生させることはできず、UsersテーブルのユーザーIDのごく一部のみがSpecialUsersテーブルに含まれます。
CREATE TABLE "SPECIALUSERS" (
"USERID" NUMBER NOT NULL,
CONSTRAINT "PK_SPECIALUSERS" PRIMARY KEY ("USERID") )
ALTER TABLE "SPECIALUSERS" ADD CONSTRAINT "FK_SPECIALUSERS_USERID" FOREIGN KEY ("USERID")
REFERENCES "USERS" ("ID")
/
HibernateでのUsersテーブルのマッピングは問題なく機能します
<hibernate-mapping package="com.initech.domain">
<class name="com.initech.User" table="USERS">
<id name="id" column="ID" type="java.lang.Long">
<meta attribute="use-in-tostring">true</meta>
<generator class="sequence">
<param name="sequence">SEQ_USERS_ID</param>
</generator>
</id>
<property name="loginName" column="LOGINNAME" type="java.lang.String" not-null="true">
<meta attribute="use-in-tostring">true</meta>
</property>
</class>
</hibernate-mapping>
しかし、SpecialUsersテーブルのマッピングを作成するのに苦労しています。私が見つけたインターネットのすべての例(Hibernateのドキュメントなど)には、このタイプの自己参照がありません。私はこのようなマッピングを試しました:
<hibernate-mapping package="com.initech.domain">
<class name="com.initech.User" table="SPECIALUSERS">
<id name="id" column="USERID">
<meta attribute="use-in-tostring">true</meta>
<generator class="foreign">
<param name="property">user</param>
</generator>
</id>
<one-to-one name="user" class="User"/>
</class>
</hibernate-mapping>
しかし、エラーが発生しました
Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException:
Duplicate class/entity mapping com.initech.User
SpecialUsersテーブルをどのようにマップする必要がありますか?アプリケーションレベルで必要なのは、SpecialUsersテーブルに含まれているUserオブジェクトのリストです。