281 votes

Définition des valeurs par défaut pour les colonnes dans JPA

Est-il possible de définir une valeur par défaut pour les colonnes dans JPA, et si, comment se fait-il en utilisant les annotations?

349voto

Pablo Venturino Points 1660

Vous pouvez effectuer les opérations suivantes:

@Column(name="price")
private double price = 0.0;

Il y! Vous avez juste utilisé zéro comme valeur par défaut.

Note va vous servir si vous êtes accédant à la base de données à partir de cette application. Si d'autres applications également utiliser la base de données, alors vous devez faire cette vérification à partir de la base de données à l'aide de Cameron columnDefinition annotation d'un attribut ou d'une autre manière.

262voto

Cameron Pope Points 3375

En fait, il est possible en JPA, bien qu’un peu d’une entaille à l’aide de la propriété de la annotation, par exemple :

124voto

Husin Wijaya Points 266

une autre approche est l’utilisation de javax.persistence.PrePersist

14voto

Marco Points 21

JPA ne supporte pas qu’et ce serait utile si il l’a fait. À l’aide de columnDefinition est DB-spécifique et non acceptable dans de nombreux cas. définir une valeur par défaut dans la classe ne suffit pas lorsque vous récupérez un enregistrement ayant des valeurs null (ce qui se produit généralement lorsque vous exécutez à nouveau vieux DBUnit tests). Ce que je fais est la suivante :

Java auto-boxe aide beaucoup en ce que.

10voto

TC1 Points 1608

Étant donné que je suis tombé sur ceci de Google tout en essayant de résoudre le même problème, je vais juste jeter dans la solution que j’ai concocté dans le cas où une personne estime qu’il est utile.

De mon point de vue il y a vraiment seulement 1 solutions à ce problème--@PrePersist. Si vous le faites dans @PrePersist, vous dois vérifier si le de la valeur déjà bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X