Ruhezustand Anmerkungen, geben Sie die Spalte Standardwert
Ich habe ein domain-Objekt und kommentierte wie folgt
@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
*/
}
Die Spalte Request_date kann nicht null sein und als pro für die DDL der Standardwert ist DATEPART (oracle-DB). Wie kann ich Anmerkungen in diesem Feld so, dass, wenn die requestDate-Eigenschaft ist null,hiberanate fügt automatisch DATEPART.? Derzeit wirft es Fehler, wenn das Feld null ist,das ist sehr offensichtlich, wie es kann nicht null sein, da pro die DB-Einschränkungen. Wie mache ich das?
Eine alternative ist, markieren Sie dieses Feld als vorübergehende und die Einsätze funktionieren. Aber der negative Aspekt ist, dass ich nicht in der Lage, um den Wert abzurufen (request_date Spalte).
InformationsquelleAutor chedine | 2010-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man den default-Wert in einer columnDefinition. Ein Beispiel würde wie folgt Aussehen:
Bitte erwähnen Sie in Ihrer Frage das, was du bereits versucht, und warum es nicht für Sie arbeiten. Siehe meinen anderen Kommentar für die Begründung, die dahinter steckt.
Welche Fehler gilt es zu werfen ? wenn Sie eine Lösung ähnlich der meinen. Coz ich bin mit diesem und nicht vor einem Problem.
Als pro dies, opensource.atlassian.com/projects/hibernate/browse/HHH-4341, die Lösung ist herstellerspezifisch und leider funktioniert nicht mit oracle. Nicht die Fähigkeit ist, geben Sie den default-Wert zu sein scheint, eine fehlende Funktion.
können Sie nach, welche Fehlermeldung Sie erhalten mit der obigen Lösung.
InformationsquelleAutor YoK
Dies ist eine fehlende Funktion in hibernate annotations. Auch gibt es einige workaround als Yok hat geschrieben. Das problem ist, dass die Problemumgehung ist Anbieter abhängig und funktioniert möglicherweise nicht für alle DB. In meinem Fall,Oracle, es nicht funktioniert und wurde gemeldet als bug.
InformationsquelleAutor chedine
Weisen Sie einen Standardwert für das Feld:
Wenn Sie spezifische Einschränkungen, warum nicht fügen Sie Sie in die Frage?! Sie würde besser Antworten und die Leute würden nicht Ihre Zeit verschwenden was darauf hindeutet, dass etwas nicht passen Sie Ihre Zwänge...
Kann sein, mein Fehler. Anyways, vielen Dank für Ihre Zeit.
Ich werde noch lassen Sie diese Antwort für das wohl von Menschen mit unterschiedlichen Einschränkungen als die ihrige.
Hat mir geholfen, schön, dass du es dabei gelassen
InformationsquelleAutor Bozho
@ColumnDefault (Arbeit für DDL-update).
hibernate.hbm2ddl.auto=update
DDL Generieren:
InformationsquelleAutor searching9x
Stellen Sie den Standardwert in Oracle für die Spalte DATEPART:
ALTER TABLE APP MODIFY (REQUEST_DATE DEFAULT SYSDATE);
Dann aus dem Ruhezustand Perspektive ist es, kann null sein.
Hibernate speichern einen NULL-Wert an die Datenbank. Oracle konvertieren, um DATEPART. Und jeder wird glücklich sein.
Wenn Sie den selben Einsatz von SQL*Plus oder sowas, funktioniert es wirklich oder geben Sie auch diesen Fehler?
Gleichen Fehler "Cannot insert null".
InformationsquelleAutor WW.
Ich gelöst Zuweisung eines Wertes an die variable wie in diesem private Integer active= 0;
InformationsquelleAutor SaganTheBest