@OneToOne(facultatif=false) et les annotations @JoinColumn(nullable=false)
Je suis tombé sur cet exemple en JPA 2.0 FR Spécification, 11.1.37. OneToOne Annotation, page 403:
@OneToOne(optional=false)
@JoinColumn(name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
public CustomerRecord getCustomerRecord() { return customerRecord; }
Est-il une raison que je devrais mettre @OneToOne(optional=false)
et, en même temps, mettre @JoinColumn(... nullable=false)
?
Ne sont pas ces deux déclarations de la même manière? N'est-ce pas un pléonasme?
Sont tous les deux utilisés dans DDL génération de schéma?
OriginalL'auteur Piotr Nowicki | 2011-11-25
Vous devez vous connecter pour publier un commentaire.
Officiellement
optional=false
est un moteur d'exécution de l'instruction à l'implémentation JPA, etnullable=false
est une instruction DDL générateur. Ils ne sont donc pas strictement inutile.La différence peut devenir importante quand il y a de l'entité héritage impliqués. Si une configuration particulière n'existe que sur une sous-classe, et que vous avez unique table de la table par hiérarchie de la stratégie, puis le OneToOne cartographie peut être
optional=false
sur la sous-classe donnée qui contient la cartographie. Cependant, la colonne de jointure ne peut pas être fait, non pas null, depuis lors, d'autres sous-classes qui partagent la table ne peut pas être inséré!Dans la pratique, les différentes versions de différents fournisseurs peuvent ou ne peuvent pas interpréter soit un à chaque fois, caveat emptor.
OriginalL'auteur Affe