Mysql
 sql >> Database >  >> RDS >> Mysql

Sospensione Salva comportamento strano

Il tuo problema più grande è la colonna errata nel <key> mappatura - dovrebbe essere "user_id", non "id". Detto questo, tutta la tua mappatura mi sembra un po' strana.

Prima di tutto, se vuoi che gli ID vengano generati automaticamente, dovresti davvero lasciare che Hibernate se ne occupi specificando il generatore appropriato:

 <id column="id" name="id">
   <generator class="native"/>
 </id>

Leggi Documentazione di ibernazione sui generatori per le varie opzioni disponibili.

In secondo luogo, se tutto ciò di cui hai bisogno è un insieme di tipi di stringhe, considera di riassociarli in una raccolta di elementi piuttosto che in una relazione uno-a-molti:

 <set name="types" table="types">
    <key column="user_id"/>
    <element column="type" type="string"/>
 </set> 

In questo modo non avrai bisogno di una classe "Tipi" esplicita o di una mappatura per essa. Anche se desideri avere attributi aggiuntivi su "Tipi", puoi comunque mapparlo come componente anziché come entità.

Infine, se "Tipi" deve essere un'entità a causa di qualche requisito che non hai descritto, la relazione tra "Utenti" e "Tipi" è bidirezionale e deve essere mappata come tale:

 <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 quest'ultimo caso "Tipi" dovrebbe avere una proprietà "utente" di tipo "Utenti".Qui è un esempio dettagliato.