0

(親クラス)(EmployeeMaster の子クラス) の3pojoつがあります。EmployeeMaster HrPersonal

pojo次に、次のように構築された、それぞれに 3 つの個別のテーブルがあります。

create table emp_master(emp_code integer,emp_name text,emp_desig text,
emp_dept text,primary key(emp_code));

create table hr(emp_code integer,salary integer,hra integer,da integer,
taxes integer,grade text,foreign key(emp_code) references emp_master(emp_code));

create table personal(emp_code integer,address text,married bool,
foreign key(emp_code) references emp_master(emp_code));

emp_codeは の主キーであり、とテーブルemp_masterの両方の外部キーです。hrpersonal

データを取り込むために3 つの個別のjspフォームを作成しました。

以下はhibernate mappingファイルです:

<hibernate-mapping>
  <class name="pojo.EmployeeMaster" table="emp_master">
      <id name="emp_code">
          <generator class="assigned" />
      </id>
      <property name="emp_dept" />
      <property name="emp_desig" />
      <property name="emp_name" />

      <joined-subclass name="pojo.Hr" table="hr">
          <key column="emp_code" />
          <property name="da" />
          <property name="grade" />
          <property name="hra" />
          <property name="salary" />
          <property name="taxes" />
      </joined-subclass>

      <joined-subclass name="pojo.Personal" table="personal">
          <key column="emp_code" />
          <property name="address" />
          <property name="married" />
      </joined-subclass>

  </class>
</hibernate-mapping>

問題は、行が不要で、同じ行のデータを他のテーブル、つまりandnullに送信したいということです。emp_codehrpersonal

hrしかし、 のテーブルにデータを送信しようとするとemp_code 101、 に既に存在するmaster tableというエラーが表示されますDuplicate entry '101' for key 'PRIMARY'

generator class to incrementマッピング xml でを変更すると、子クラスから挿入されたデータに対して null 値を持つ行が取得されます。必要なのは、同じ を持つ 3 つのテーブルへのエントリemployee codeです。これを行うにはどうすればよいですか?

4

1 に答える 1

0

休止状態のマッピングは、階層を形成することを示唆していますEmployeeMasterHRつまりpersonalEmployeeMaster親クラスでありHRPersonal子クラスです。

達成したいこととマッピングが示唆することに何か問題があります。上記のマッピングでは、を両方ではなくいずれかIDにマッピングできます。HRPersonal

マッピングをINHERITANCEからASSOCIATIONに変更することを検討する必要があります。

マッピング xml に従って、Java クラスは次のように定義する必要があります。

public class EmployeeMaster {}

public class HR extends EmployeeMaster{}

public class Personal extends EmployeeMaster{}

ここで、要件を上記のモデルに適合させる方法を考案する必要があります。そうでない場合は、モデルを変更するしかありません (xml マッピングも)。

于 2013-06-11T05:56:47.107 に答える