我有一个类用户对象。我正在尝试使用 Hibernate 从数据库中加载此对象。我的 SQL 语句是:
SELECT
users.uid AS uid,
users.deleted AS deleted,
users.username AS username,
users.passwd AS passwd,
users.disabled AS disabled,
users.lockout AS lockout,
users.expires AS expires,
data_firstname.value AS firstname,
data_lastname.value AS lastname
FROM
ac_users as users
LEFT JOIN
ac_userdef_data as data_firstname
ON
users.uid = data_firstname.parentuid AND
data_firstname.fieldname like 'firstname'
LEFT JOIN
ac_userdef_data as data_lastname
ON
users.uid = data_lastname.parentuid AND
data_lastname.fieldname like 'lastname'
WHERE
users.deleted = 0
我对 User 类的映射是:
<class name="com.agetor.commons.security.User" table="ac_users">
<id name="uid" column="uid" type="long" >
<generator class="native"/>
</id>
<property name="deleted" column="deleted" />
<property name="username" column="username" />
<property name="password" column="passwd" />
<property name="firstname" column="firstname" />
<property name="lastname" column="lastname" />
<property name="disabled" column="disabled" />
<property name="lockout" column="lockout" />
<property name="expires" column="expires" />
</class>
我的问题是表 ac_users 没有列 'firstname' 或 'lastname' 这些列仅存在于我的 SQL-join 语句的结果集中。它们也不存在于 ac_userdef_data 表中。我有 2 个列:字段名和值。和 2 行: fieldname = 'firstname' 在 value 列中有一些值,另一行 fieldname = 'lastname' 在 value 列中有一些值
如何更改我的映射文件,以便 Hibernate 了解它需要将名字和姓氏列加载到我的 POJO 上的名字和姓氏字段中,而这些列实际上并不存在于引用的 ac_users 表中。