Comment faire plusieurs colonnes UniqueConstraint dans hbm?
travailler sur un ancien code d'hibernation.
Comment puis-je faire ce qui suit avec hbm.xml (hibernate mapping file) au lieu des annotations?
@Table(name="users", uniqueConstraints = {
@UniqueConstraint(columnNames={"username", "client"}),
@UniqueConstraint(columnNames={"email", "client"})
})
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String username;
private String email;
private Client client;
}
23
demandé sur
Gabriel
2010-04-30 02:02:40
2 réponses
properties
balise:
...
<properties name="uk1" unique="true">
<property name="username" .../>
<many-to-one name="client" .../>
</properties>
<properties name="uk2" unique="true">
<property name="email" .../>
<many-to-one name="client" update="false" insert="false" .../>
</properties>
...
extrait de la Documentation:
L'élément
permet la définition d'un nommé, regroupement logique des propriétés d'une classe. L'utilisation la plus importante de la construction, c'est qu'il permet une combinaison de propriétés à la cible d'un bien immobilier-réf. C'est aussi un moyen commode de définir une contrainte unique à plusieurs colonnes.
Toutes les options disponibles sont décrites dans la Documentation sur L'hibernation.
20
répondu
Thierry
2013-08-18 20:05:34
Vous pouvez aussi faire ceci:
<many-to-one name="client" unique-key="uk1,uk2" .../>
<property name="username" unique-key="uk1" .../>
<property name="email" unique-key="uk2" .../>
Vous n'avez pas besoin d'utiliser l'étiquette dans hbm . Si vous voulez seulement plusieurs contraintes uniques.
4
répondu
Shayan Mirzaee
2017-07-17 09:10:25