Comment définir la valeur par défaut en mode veille prolongée
Comment puis-je définir la valeur par défaut en mode veille prolongée champ?
- Êtes-vous en utilisant le fichier de configuration XML ou des annotations?
- La réponse ci-dessous uniquement à donner JPA solutions, ce qui est correct, mais .pour une Hibernate solution reportez-vous à stackoverflow.com/questions/28107554/... vous devez utiliser
@ColumnDefault
Vous devez vous connecter pour publier un commentaire.
Si vous voulez une vraie base de données valeur par défaut, utilisez
columnDefinition
:Avis que la chaîne de
columnDefinition
est à la base de données dépendantes. Aussi, si vous choisissez cette option, vous devez utiliserdynamic-insert
, doncHibernate
ne pas inclure des colonnes avecnull
valeurs à insérer. Sinon, parler de défaut n'est pas pertinent.Mais si vous ne voulez pas de base de données par défaut de la valeur, mais simplement une valeur par défaut dans votre code Java, initialiser ta variable comme celle -
private Integer myColumn = 100;
org.hibernate.annotations.Entity
est obsolète.@DynamicInsert
annotation doit être utilisé à la place.Vous pouvez utiliser @PrePersist anotation et de définir la valeur par défaut lors de la pré-persistent scène.
Quelque chose comme ça:
Cette méthode est de ne pas dépendre de la base de données de type/version en dessous de la mise en veille prolongée. La valeur par défaut est fixé devant la persistance de l'objet de mappage.
setMyProperty
n'est pas utilisé par votre exemple. Pourquoi avez-vous inclure?ce sujet juste mettre une valeur par défaut pour le champ?
si elles passent d'une valeur, puis il sera remplacé, sinon, vous avez un défaut.
utiliser hibernate annotations
Si vous voulez le faire dans la base de données:
Définir la valeur par défaut dans la base de données (sql server échantillon):
De Mapping hibernate fichier:
Voir, la clé est d'insérer="false" update="false"
Une solution est d'avoir votre getter vérifier pour voir si la valeur que vous travaillez avec est null (ou quelle que soit sa non-initialisé état serait) et si c'est égal à cela, il suffit de retourner votre valeur par défaut:
J'ai cherché pour cela et trouvé beaucoup de réponses à la valeur par défaut pour la colonne.Si vous souhaitez utiliser la valeur par défaut définie dans la Table SQL, puis dans l'Annotation @Column utilisation "insérable = false". insérable
Si vous utilisez columnDefination il annotation @Column est peut-être ça ne fonctionnera pas comme il est à la Base de données dépendantes.
Utilisation
@ColumnDefault()
annotation. C'est hibernate seulement si.Vous pouvez utiliser la classe java constructeur pour définir les valeurs par défaut. Par exemple:
Travailler avec Oracle, j'ai essayé d'insérer une valeur par défaut pour un Enum
J'ai trouvé le suivant pour le meilleur travail.
Si vous souhaitez définir la valeur par défaut en termes de base de données, il suffit de définir
@Column( columnDefinition = "int default 1")
Mais si ce que vous avez l'intention est de définir une valeur par défaut dans votre application java, vous pouvez le mettre sur votre attribut de classe comme ceci:
private Integer attribute = 1;
je suis travailler avec hibernate 5 et postgres, et cela a fonctionné formulaire de moi.
@Column(name = "ACCOUNT_TYPE",nullable=false, columnDefinition="varchar2 par défaut 'END_USER'" )
@Énumérés(EnumType.CHAÎNE de caractères)
privé AccountType accountType;
La suggestion ci-dessus fonctionne, mais seulement si l'annotation est utilisée sur la méthode de lecture. Si les annotations est utilisé lorsque le membre est déclaré, il ne se passera rien.