La persistance @Colonne nullable = false pouvez insérer la valeur null
Je veux faire cette colonne ne peut pas être nul mais quand je l'insérer dans la base de données d'un registre de valeurs null cela me permet de m'insérer. J'ai lu la documentation et je ne sais pas pourquoi il ne marche pas de travail.
@Column(name="QWECOD", nullable = false)
private String qwe;
THX
Mise à JOUR: Im en utilisant Toplink et java org.eclipse.la persistance.eclipselink:2.4.2.
OriginalL'auteur Mathew Rock | 2013-10-18
Vous devez vous connecter pour publier un commentaire.
Je pense prendre la valeur null est utilisé si vous générez le schéma, à l'aide de la mise en œuvre de l'entitymanager. Je ne sais pas si elle est /doit être validé alors que la persistance d'une entité.
Peut-être qu'il est utile que si vous utilisez le @NotNull annotation, mais ce n'est PAS évident JPA. Il est défini dans le La JSR-303
Il y a un sujet sur Stackoverflow trop qui couvre votre question:
Stackoverflow - Confusion notnull vs columnnullable faux
EDIT: Dans la JPA 2.1 Spécification, il y a cette section:
Comme il n'y a pas d'autre indication donnée, je suppose suivantes:
Si une JPA-conforme EntityManager CRÉE le schéma, il doit appliquer la nullable contrainte sur la colonne à l'aide d'un aequivalent DB liées contrainte (par exemple, notnull)
Lorsque vous persistez à une entité, il n'est PAS vérifiée par l'Entitymanager, MAIS par le sous-jacent databse. Donc, si la DB génère une erreur, l'EntityManager propage cette erreur jusqu'à l'appelant.
Si vous créez la table vous-même sans l'aide de la DB nullable contrainte, puis l'entitymanager essaie conserver l'entité et ne reçoit PAS d'erreur --> persist est d'accord althouh il y a quelques valeurs null ne devrait pas être là.
@NotNull
et(Nullable = false)
sont les mêmes.Je ne trouve aucune allusion au sein de la JPA 2.1 Spécification qui utilise @NotNull - comme il n'est PAS défini. Aussi à l'intérieur de la spécification, il est seulement de vagues définies (je vais avoir alook sur les spécifications et mise à jour de ma réponse)
@NotNull
n'est pas défini dans la JPA, les Specs, bien sûr, mais Hibernate utilise comme un alias pournullable=false
. Regardez NotNullValidator: grepcode.com/file/repo1.maven.org/maven2/hibernate/...Corrigez-moi si je me trompe, mais je ne vois AUCUNE allusion à la question de savoir où l'auteur dit qu'il utilise Hibernate ? J'ai ajouté deux liens pertinents afin de fournir de plus amples informations. Aussi j'ai dit que je ne suis pas SÛR si c'est pour être utilisé par la mise en œuvre de l'entitymanager. Retour à la rubrique aujourd'hui: je vais mettre à jour ma réponse et ajoutez le SEUL article que j'ai trouvé à l'intérieur de la JPA 2.1 spécifications qui donne une astuce pour utiliser les valeurs null.
J'en ai parlé Hibernate, car autant que je sache, c'est la seule APP Compatible gestionnaire de persistance à l'aide de
@NotNull
de la JSR 303 ;). Je justed voulais préciser que@NotNull
=nullable = false
, de sorte qu'il ne ferait aucune différence.OriginalL'auteur Andreas Aumayr
si vous n'insérez dans la base de données, Hibernate ou de tout fournisseur de persistance ne voudrais pas ne mesure de vous contrôler. essayez d'insérer à l'aide de fournisseur de persistance.
Dépend si vous êtes en utilisant Hibernate généré DDL. Pas tout le monde.
laissez hbn de créer des tableaux pour vous, alors seulement il serait possible
Si vous générez votre db schéma à partir d'entités qu'elle sera là sans doute, mais quand vous écrivez entités de schéma existant, puis prendre la valeur null sera seul indice pour le fournisseur de persistance
OriginalL'auteur Pankaj Sharma