如何将单个POJO类映射到多个表

时间:2017-08-21 06:44:47

标签: java hibernate

我正在尝试将com.chqmas.user.User pojo类映射到USR table.and USR_PWD_HISTORY表。

<?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类映射到这两个表。

谢谢。

2 个答案:

答案 0 :(得分:0)

USR和USR_PWD_HISTORY代表两个不同的逻辑实体,那么为什么不在用户对象中保留密码历史列表呢?

答案 1 :(得分: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>

但是,我建议不要将它用于1对多或多对多的关系,其中第二个POJO和一个包更合适。

此外,列名称表明存储了纯文本密码,这是一种安全风险,并且是“不良做法”。

相关问题