2017-08-21 97 views
1

我試圖將com.chqmas.user.User pojo類映射到USR table.and 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

我怎麼能這個POJO類映射到這兩個表。

謝謝。

+0

不可能。建議重新設計Java類 - 順便說一句,我猜他們是1:N關係? –

+1

兩張桌子之間的關係是什麼? – MartinByers

+0

兩個表之間沒有關係。 –

回答

1

USR和USR_PWD_HISTORY表示兩個不同的邏輯實體,那麼爲什麼不把密碼歷史列表保存在用戶對象內呢?

+0

你是什麼意思用戶對象? –

+0

用戶類的一個實例[see] (https://stackoverflow.com/a/1486212/4725465) – mzalcmanis

0

這是可能的,雖然我會再次強烈建議這種方法,因爲我不相信這將是一個數據的準確表示。

您可以使用HBM中的連接元素。

<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> 

不過,我不會推薦這對於一個1一對多或多對多一對多的關係,其中第二POJO和一個袋子會更合適。

此外,列名將暗示存儲純文本密碼,這是安全風險,並且是「不良做法」。