L'Hibernation des annotations, spécifiez la colonne valeur par défaut
J'ai un objet de domaine et annoté comme suit
@Entity
@Table(name = "REQUEST")
public class Request {
/**
* Unique id for this request
*/
@Id
@GeneratedValue
@Column(name = "EQ_ID")
private long requestId;
/**
*
*/
@Column(name = "EMAIL_ID")
private String emailId;
/**
*
*/
@Column(name = "REQUEST_DATE")
private Date requestDate;
/**
*Getters/setters omitted
*/
}
La colonne Request_date ne peut pas être null et que par la DDL la valeur par défaut est sysdate (oracle DB). Comment annoter ce domaine de sorte que si le requestDate propriété est null,hiberanate insère automatiquement sysdate.? Actuellement, il déclenche une erreur si le champ est null,ce qui est très évident que cela ne peut pas être null comme par la DB contraintes. Comment puis-je aller à ce sujet?
Une alternative est la marque de ce champ est transitoire et les inserts, beau travail. Mais l'aspect négatif est que, je ne vais pas être en mesure de récupérer la valeur (de request_date colonne).
OriginalL'auteur chedine | 2010-08-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre la valeur par défaut dans un columnDefinition. Un exemple serait:
Veuillez mentionner dans votre question que vous avez déjà essayé, et pourquoi il ne fonctionne pas pour vous. Voir mon autre commentaire pour le raisonnement derrière cette.
Quelle erreur de ne jeter ? lorsque vous utilisez une solution similaire à la mienne. Coz je suis à l'aide de ceci et ne pas faire face à toute question.
Conformément à cela, opensource.atlassian.com/projects/hibernate/browse/HHH-4341, la solution est spécifique au vendeur et, malheureusement, ne fonctionne pas avec oracle. N'ayant pas la possibilité de spécifier la valeur par défaut semble être un élément manquant.
vous pouvez poster ce que l'erreur que vous obtenez avec la solution ci-dessus.
OriginalL'auteur YoK
C'est une fonctionnalité manquante dans hibernate annotations. Aussi, il existe une solution de contournement comme Yok a posté. Le problème est que la solution de contournement est vendeur dépendante et peut ne pas fonctionner pour tous les DB. Dans mon cas,Oracle, il n'est pas de travail et a été signalée comme un bug.
OriginalL'auteur chedine
Attribuer une valeur par défaut pour le champ:
Si vous avez des contraintes spécifiques, pourquoi ne pas les ajouter dans la question?! Vous feriez mieux de réponses et les gens ne perdent pas de temps, ce qui suggère quelque chose qui ne correspond pas à vos contraintes...
Peut-être, mon erreur. En tout cas, merci pour votre temps.
Je vais encore laisser cette réponse pour le bénéfice des personnes avec des contraintes différentes de la vôtre.
M'a aidé, bien que vous l'avez laissé ici
OriginalL'auteur Bozho
À l'aide de @ColumnDefault (Travail pour DDL mise à jour).
mise en veille prolongée.hbm2ddl.auto=mise à jour
DDL Générer:
OriginalL'auteur searching9x
Rendre la valeur par défaut dans Oracle pour la colonne SYSDATE:
ALTER TABLE APP MODIFY (REQUEST_DATE DEFAULT SYSDATE);
Puis, à partir de Hibernate perspective, il peut être nullable.
Hibernate va enregistrer une valeur NULL dans la base de données. Oracle va convertir SYSDATE. Et tout le monde sera heureux.
Si vous exécutez la même INSERTION à partir de SQL*Plus ou quelque chose, est-ce de travailler ou de vous donner cette erreur?
Même message d'erreur "Impossible d'insérer la valeur null".
OriginalL'auteur WW.
J'ai décidé l'attribution d'une valeur à la variable comme ceci Entier privée active= 0;
OriginalL'auteur SaganTheBest