J'ai un objet Utilisateur de classe. J'essaye de charger cet objet de la base de données en utilisant Hibernate. Mon instruction SQL est:Hibernate - Nouvelles colonnes d'une table jointe
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
Ma correspondance pour la classe utilisateur est:
<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>
Mon problème est que la table ac_users ne dispose pas d'une colonne « prenom » ou « nom » Ces colonnes , n'existe que dans mon resultset à partir de l'instruction SQL-join. Ils n'existent pas non plus dans la table ac_userdef_data. Il y a 2 colonnes: fieldname et value. et 2 lignes: fieldname = « prenom » avec une valeur dans la colonne de valeur et une autre ligne avec fieldname = « lastname » avec une valeur dans la colonne Valeur
Comment puis-je changer mon fichier de mappage, de sorte que Hibernate comprendra qu'il doit charger la colonne prénom et nom dans mes champs prénom et nom de mon POJO, alors que ces colonnes n'existent pas réellement sur la table ac_users référencée.
Cette réponse n'est pas correcte à 100%. Je peux charger des données en utilisant users = (Liste) session.getNamedQuery ("GetAllUsers"). List(); Mais je ne peux pas utiliser users = session.createCriteria (User.class) .list(); –
JesperGJensen