我正在尝试将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>
但我收到了这个错误..
如何将此pojo类映射到这两个表。
谢谢。
答案 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和一个包更合适。
此外,列名称表明存储了纯文本密码,这是一种安全风险,并且是“不良做法”。