Uw grootste probleem is de onjuiste kolom in de <key>
mapping - het moet "user_id" zijn, niet "id". Dat gezegd hebbende, je hele mapping lijkt me een beetje vreemd.
Allereerst, als u automatisch gegenereerde ID's wilt, moet u Hibernate daar echt voor laten zorgen door de juiste generator op te geven:
<id column="id" name="id"> <generator class="native"/> </id>
Lees Hibernate-documentatie op generatoren voor verschillende beschikbare opties.
Ten tweede, als je alleen een set stringtypes nodig hebt, overweeg dan om ze opnieuw toe te wijzen aan een verzameling elementen in plaats van een een-op-veel-relatie:
<set name="types" table="types"> <key column="user_id"/> <element column="type" type="string"/> </set>
Op die manier heb je er geen expliciete "Types" -klasse of toewijzing voor nodig. Zelfs als u extra attributen op "Types" wilt hebben, kunt u het nog steeds als component toewijzen in plaats van als entiteit.
Ten slotte, als "Typen" een entiteit moeten zijn vanwege een vereiste die u niet hebt beschreven, is de relatie tussen "Gebruikers" en "Typen" bidirectioneel en moet als zodanig worden toegewezen:
<set name="types" table="types" inverse="true"> <key column="user_id"/> <one-to-many class="Types"/> </set> ... in Types mapping: <many-to-one name="user" column="user_id" not-null="true"/>
In het laatste geval zou "Types" een "user" eigenschap van het type "Users" moeten hebben.Hier is een gedetailleerd voorbeeld.