У меня есть класс объекта User. Я пытаюсь загрузить этот объект из базы данных с помощью 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 не имеет столбца «имя» или «фамилия»
Эти столбцы существуют только в моем наборе результатов из оператора SQL-join.
Они также не существуют в таблице ac_userdef_data. Там у меня есть 2 столбца: имя поля и значение. и 2 ряда:
fieldname = 'firstname' с некоторым значением в столбце значений
и еще один ряд с
fieldname = 'lastname' с некоторым значением в столбце значений
Как изменить файл сопоставления, чтобы Hibernate понимал, что ему нужно загрузить столбец имени и фамилии в поля моего имени и фамилии в моем POJO, в то время как эти столбцы фактически не существуют в указанной таблице ac_users. 1009 *