Hello Stack Overflow experts, j'ai besoin de votre expertice:One-To-Many unidirectionnelles sur un DB existant
Je suis en train d'utiliser Hibernate sur une base de données existant. J'essaie actuellement de charger un objet Utilisateur et une liste d'objets UserData qui vont avec.
dans la base de données la mise en page (simplifié) est
| User | | UserData |
---------------- -----------------------------------
uid | username | | uid | parentuid | field | value |
Ainsi, chaque objet utilisateur correspond à tous les objets UserData où UserData.parentuid = User.uid.
Mon utilisateur fichier de mappage de classe
<class name="com.agetor.commons.security.User" table="ac_users">
<id name="uid" column="uid" type="long" >
<!--<generator class="native"/>-->
</id>
<property name="username" column="username" />
<list name="fieldData" cascade="all">
<key column="parentuid" not-null="true" />
<index column="parentuid" />
<one-to-many class="com.agetor.commons.fields.FieldData"/>
</list>
</class>
fichier de mappage Mu UserData
<class name="com.agetor.commons.fields.FieldData" table="ac_userdef_data">
<id name="uid" column="uid" type="long" >
<!--<generator class="native"/> -->
</id>
<!--<property name="parentuid" column="parentuid" /> -->
<property name="fieldname" column="fieldname" />
<property name="value" column="value" />
</class>
Jusqu'à présent, je l'ai essayé beaucoup de différentes configurations et tous ont eu des degrés divers de failue. Le code collé ici ne fonctionne pas.
- La propriété parentuid est mise en commentaire, car Hibernate renvoie une erreur «Colonne répétée dans le mappage».
- Actuellement, il reste une « colonne répétée dans la cartographie » sur le champ uid, j'utiliser pour
<list-index />
- Je ne comprends pas où je précise que UserData.parentuid est la clé étrangère et que la liste doit utiliser User.uid comme clé.
J'espère que quelqu'un est en mesure d'aider.
Lorsque vous définissez à la fois un One-To-Many et Many-to-One, ce ne rend pas bi-directionnel? Le modèle de travail actuel est unidirectionnel et UserData ne fait pas référence à l'utilisateur. Votre suggestion échoue, car Hibernate n'a pas pu trouver une méthode get ou set pour User sur UserData.
est-il implicite que ce code utilise User.uid comme clé et correspond à cette contre la colonne UserData.parentuid? Ou ce fait est-il spécifié ailleurs? Je suis toujours en train d'apprendre Hibernate et de travailler mon chemin à travers la documentation et les exemples que je peux trouver.