Comment définir la valeur par défaut dans le champ Hibernation?Comment définir la valeur par défaut dans Hibernate
Répondre
Si vous voulez une valeur par défaut réelle, utilisez columnDefinition - @Column(name = "myColumn", nullable = false, columnDefinition = "int default 100")
. Notez que la chaîne dans columnDefinition
dépend de la base de données. En outre, si vous choisissez cette option, vous devez utiliser dynamic-insert
, donc Hibernate
n'inclut pas les colonnes avec null
valeurs sur l'insertion. Sinon, parler de défaut n'est pas pertinent.
Mais si vous ne voulez pas de valeur par défaut de la base de données, mais simplement une valeur par défaut dans votre code Java, juste initialiser votre variable comme celle - private Integer myColumn = 100;
Avec des annotations: @ org.hibernate.annotations.Entity (dynamicInsert = true) – homaxto
Actuellement, 'org.hibernate.annotations.Entity' est obsolète. L'annotation '@ DynamicInsert' devrait être utilisée à la place. – jannis
Je ne recommanderais pas d'utiliser columnDefinition pour cette situation, ce n'est pas portable d'une base de données à l'autre, et vous devez connaître la langue SQL spécifique de votre serveur. – pdem
Qu'en est-il juste de définir une valeur par défaut pour le champ? Si elles transmettent une valeur, elles seront remplacées, sinon, vous avez une valeur par défaut.
Cela ne l'empêche pas de le définir sur null à un moment donné. – michali
@michali: le rôle d'une valeur par défaut n'empêche pas de mettre à jour la valeur, n'est-ce pas? –
Une solution est d'avoir votre chèque getter pour voir si quelle que soit la valeur vous travaillez est nulle (ou quel que soit son état non initialisé serait) et si elle est égale à celle, juste retourner votre valeur par défaut:
public String getStringValue(){
return (this.stringValue == null) ? "Default" : stringValue;
}
J'utilise un mappeur qui appelle le setter sur mon objet entité. Y a-t-il un inconvénient à utiliser votre fragment de code sur le getter et le setter? –
Si vous voulez faire dans la base de données:
Définir le val par défaut UE dans la base de données (exemple de serveur sql):
ALTER TABLE [TABLE_NAME] ADD CONSTRAINT [CONSTRAINT_NAME] DEFAULT (newid()) FOR [COLUMN_NAME]
fichier Mise en veille prolongée Mapping:
<hibernate-mapping ....
...
<property name="fieldName" column="columnName" type="Guid" access="field" not-null="false" insert="false" update="false" />
...
Voir, la clé est d'insérer = "false" update = "false"
Il y a un problème pour Oracle: Si la propriété n'est pas nulle, sa valeur reste la valeur par défaut. Pas la valeur réelle. – youngzy
Vous pouvez utiliser @ Préprésentez une anotation et définissez la valeur par défaut dans l'étape de pré-persistance.
Quelque chose comme ça:
//... some code
private String myProperty;
//... some code
@PrePersist
public void prePersist() {
if(myProperty == null) //We set default value in case if the value is not set yet.
myProperty = "Default value";
}
// property methods
@Column(nullable = false) //restricting Null value on database level.
public String getMyProperty() {
return myProperty;
}
public void setMyProperty(String myProperty) {
this.myProperty= myProperty;
}
Cette méthode est dépend pas du type/la version de base de données sous la mise en veille prolongée. La valeur par défaut est définie avant de conserver l'objet de mappage.
Étant donné que 'setMyProperty' n'est pas utilisé par votre exemple. Pourquoi l'incluez-vous? – EndermanAPM
Je donne juste l'exemple des annotations d'hibernation pour la propriété java standard (variable privée avec des méthodes get/set publiques). J'ai remarqué et corrigé une erreur ... String type de la méthode set argumet manquait. – dbricman
La solution proposée ci-dessus pour définir la valeur par défaut en utilisant Hibernate
@Column(name = “myColumn”, nullable = false, columnDefinition = “int default 100")
est spécifique au fournisseur et ne fonctionnera pas pour Oracle.
La suggestion ci-dessus fonctionne, mais seulement si l'annotation est utilisée sur la méthode getter. Si les annotations sont utilisées où le membre est déclaré, rien ne se passera.
public String getStringValue(){
return (this.stringValue == null) ? "Default" : stringValue;
}
<property name="age" type="integer">
<column name="age" not-null="false" default="null" />
</property>
Avez-vous l'intention de [expliquer votre solution] (http://stackoverflow.com/help/how-to-answer) un peu? Vous pouvez lire [Comment écrire une bonne réponse] (http://stackoverflow.com/help/how-to-answer). –
J'ai cherché pour cela et trouvé beaucoup de réponses à une valeur par défaut pour column.If que vous souhaitez utiliser la valeur par défaut définie dans le tableau SQL puis dans @Column Annotation utiliser « insérable = false » .insérable
@Column (name = columnName, longueur = lengthOfColumn, insérable = false)
Si vous utilisez columnDefination il @Column l'annotation peut être il ne fonctionnera pas car elle dépend base de données.
Travailler avec Oracle, j'ai essayé d'insérer une valeur par défaut pour un Enum
J'ai trouvé ce qui suit pour travailler le meilleur.
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private EnumType myProperty = EnumType.DEFAULT_VALUE;
Vous pouvez utiliser le constructeur de classe java pour définir les valeurs par défaut. Par exemple:
public class Entity implements Serializable{
private Double field1
private Integer field2;
private T fieldN;
public Entity(){
this.field1=0.0;
this.field2=0;
...
this.fieldN= <your default value>
}
//Setters and Getters
...
}
Utilisez l'annotation @ColumnDefault()
. C'est hiberner seulement si.
annotation mise en veille prolongée utilisation
@ColumnDefault("-1")
private Long clientId;
Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. - [De l'avis] (/ review/low-quality-posts/18356040) – Mamun
Si vous souhaitez définir la valeur par défaut en termes de base de données, vient 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 définissez-le sur votre attribut de classe comme ceci: private Integer attribute = 1;
- 1. comment définir la valeur par défaut dans la liste déroulante?
- 2. Comment définir la valeur par défaut pour textarea dans struts2
- 3. LinqDataSource: Comment définir une valeur par défaut
- 4. Définir document.title sur la valeur par défaut
- 5. Définir la valeur par défaut dans un DataContract?
- 6. Définir une valeur par défaut dans la liste déroulante
- 7. ActiveScaffold: Comment définir la valeur par défaut d'une liste déroulante?
- 8. Comment définir la valeur par défaut d'une variable en C#?
- 9. Comment définir la valeur par défaut d'une colonne?
- 10. Comment définir la valeur par défaut h: bouton selectOneRadio
- 11. Comment définir une variable à la valeur par défaut?
- 12. Comment définir une valeur par défaut dans un extrait IF?
- 13. Drupal - Définir la valeur par défaut dans hook_form_alter?
- 14. Comment définir une valeur par défaut has_one dans ActiveRecord?
- 15. UserControl Valeur par défaut dans la propriété
- 16. Valeur par défaut dans la liaison WPF
- 17. WPF: Définir la valeur par défaut de la liaison
- 18. Définir la valeur par défaut du tableau dynamique
- 19. Comment définir une séquence comme valeur par défaut via pgAdmin?
- 20. Comment définir une valeur par défaut de ComboBox VB.Net
- 21. Définir une valeur par défaut pour jQuery daterangepicker par Filament
- 22. Comment définir une valeur pour l'option par défaut avec Html.DropDownList
- 23. comment définir l'emplacement par défaut dans la balise de navigation
- 24. Comment définir une date-valeur par défaut Postgresql comme 'YYYYMM'?
- 25. Définir une heure comme valeur par défaut dans gxt?
- 26. Valeur par défaut pour la liste déroulante
- 27. Comment définir vim colorscheme par défaut
- 28. Comment définir la valeur par défaut sélectionnée dans la balise Struts2 <s:select>?
- 29. Comment définir la valeur null par défaut dans un champ de date dans sql server 2000?
- 30. Comment définir la valeur par défaut de Couleurs dans un contrôle personnalisé dans Winforms?
Utilisez-vous le fichier de configuration XML ou les annotations? – Bruno
La réponse ci-dessous ne donne que des solutions JPA, ce qui est correct mais .pour une solution Hibernate voir http://stackoverflow.com/questions/28107554/define-default-column-value-with-annotations-in-hibernate vous devez utiliser '@ ColumnDefault' – pdem