2017-08-21 20 views
1

com.chqmas.user.User pojoクラスをUSR tableとUSR_PWD_HISTORYテーブルの両方にマップしようとしています。単一POJOクラスを複数のテーブルにマップする方法

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class name="com.chqmas.user.User" table="USR" batch-size="50"> 
     <id name="name" column="NAME"/> 
     <property name="bankBranch" column="BANK_BRANCH"/> 
     <property name="realName" column="REAL_NAME"/> 
     <property name="pwd" column="PWD"/> 
     <property name="pwdenc" column="PWD_ENC"/> 
     <property name="level" column="LEVEL"/> 
     <property name="url" column="URL"/> 
     <property name="status" column="STATUS"/> 
     <property name="lastSignOnDate" column="LAST_SIGN_ON_DATE"/> 
     <property name="passWdChangedDate" column="PASS_WD_CHANGE_DATE"/> 
    </class> 

    <class name="com.chqmas.user.User" table="USR_PWD_HISTORY" batch-size="50"> 
     <id name="name" column="NAME"/> 
     <property name="pwd" column="PWD"/> 
     <property name="pwdenc" column="PWD_ENC"/> 
     <property name="passWdChangedDate" column="PASS_WD_CHANGE_DATE"/> 
    </class> 
</hibernate-mapping> 

しかし、私はこのエラーを得た。..

enter image description here

どのように私はこの2つのテーブルに、このPOJOクラスをマッピングすることができます。

ありがとうございます。

+0

不可能です。 Javaクラスの再設計を提案する - 私は彼らが1:Nの関係であると思いますか? –

+1

2つのテーブルの関係は何ですか? – MartinByers

+0

2つのテーブル間には関係がありません。 –

答えて

1

USRとUSR_PWD_HISTORYは2つの異なる論理エンティティを表します。なぜ、パスワード履歴のリストをユーザオブジェクト内に保存しないのはなぜですか?

+0

ユーザオブジェクトはどういう意味ですか? –

+0

[参照] (https://stackoverflow.com/a/1486212/4725465) – mzalcmanis

0

これは可能ですが、データの正確な表現ではないと私は信じていますので、このアプローチをもう一度強くお勧めします。

HBMでjoin要素を使用できます。

<class name="com.chqmas.user.User" table="USR" ...> 
    <id name="name" column="NAME"/> 
    <!-- mappings for other columns from USR table --> 

    <join table="USR_PWD_HISTORY"> 
     <!-- 
      key defines the pk column of that joined table which is assumed 
      to also be the foreign-key source column referring back to 
      USR 
     --> 
     <key column="name"/> 

     <!-- mappings for other columns from USR_PWD_HISTORY table --> 
    </join> 
</class> 

は、しかし、私は2番目のPOJOとバッグがより適切であろう1対多または多対多の関係、のためにこれをお勧めしません。

また、列名にはプレーンテキストのパスワードが格納されていることが示唆されますが、これはセキュリティ上のリスクであり、「悪い習慣」です。

関連する問題