Définir par défaut la valeur de la colonne avec des annotations en veille prolongée
Je sais qu'il ya beaucoup de ces questions ici sur tant et aussi sur le net, mais toutes les réponses suggèrent d'utiliser columnDefinition
qui est à la base de données spécifique et ne sont donc pas applicables pour moi parce que le système que je suis en train de travailler sur les besoins pour s'exécuter sur différentes bases de données.
J'ai trouvé ce hibernate où quelqu'un a demandé cette fonctionnalité pour les annotations. La question a été fermé en disant que une autre question couvriront cette fonctionnalité. La deuxième question apparemment ajouté annotation @Generated
et aussi quelques autres, mais je ne pouvais pas trouver toute la documentation sur la façon de définir la valeur par défaut la valeur de la colonne avec ces nouvelles annotations.
Donc ma question est: quelqu'un sait-il comment puis-je définir une valeur par défaut la valeur de la colonne avec des annotations (et non PAS à l'aide de columnDefinition
)?
Edit: de clarifier davantage mon problème: Lorsque j'ajoute une nouvelle colonne not null, j'ai besoin d'Hibernate pour mettre à jour le schéma existant (ajout de la nouvelle colonne à la table correspondante). Mais depuis que la colonne est non nulle, la base de données ne peut pas créer de la colonne sans spécifier la valeur par défaut (si il y a déjà quelques lignes dans la table). J'ai donc besoin de charger d'Hibernation pour l'émission d'instruction DDL: ALTER TABLE my_table ADD COLUMN new_column VARCHAR(3) DEFAULT 'def'
, mais il doit être indépendant de la base de données utilisée.
OriginalL'auteur Jardo | 2015-01-23
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous avez besoin de toute la documentation, la java docs sont explicites.
Si je vous comprends bien vous avez besoin d'une manière de définir une valeur par défaut pour un champ. Si oui, veuillez voir l'extrait de code suivant.
Avez-vous essayé le "@ColumnDefault' annotation ? Je vais mettre à jour mon code afin de refléter le changement.
C'est exactement ce dont j'avais besoin merci. J'ai juste une remarque: Hibernate met la valeur de l'annotation directement dans l'instruction DDL donc, si vous voulez insérer une chaîne, vous devez vous échapper avec des guillemets, sinon vous aurez une erreur SQL. Comme ce
@ColumnDefault("'This is my default name'")
. Si vous modifiez votre réponse pour refléter cela, il sera parfait 🙂Ahh, bien sûr, qui manquait 🙂 fixe en extrait ainsi, les acclamations ...
@ColumnDefault annotation est utilisée pour spécifier la valeur par DÉFAUT DDL valeur à appliquer lors de l'utilisation de l'automatisée schéma du générateur. (à partir de docs.jboss.org/hibernate/orm/5.2/userguide/html_single/...)
OriginalL'auteur Babl
Suivante est de travailler pour moi.
@ColumnDefault("'0.0'")
@Column(name = "avgRating")
flottant privé avgRating;
OriginalL'auteur ArunDhwaj IIITH