Ich habe eine Entität mit dem Feld createTimestamp. Dies wird von der Datenbank beim Einfügen erstellt. Der Getter sieht wie folgt aus:JPA-Entität CreateTimestamp ist null nach persist
@Column(name = "create_timestamp", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", insertable = false)
public ZonedDateTime getCreateTimestamp() {
return createTimestamp;
}
Wenn jedoch mein Dienst die dao (Frühjahr Repository) ruft die Einheit zu erstellen, erstellen Sie die Zeitstempel gleich null ist.
Meine dao Methode zu erstellen:
@Override
public int insert(AntennaSpec antennaSpec) {
super.save(antennaSpec);
logger.info("Antenna Spec " + antennaSpec.getAntennaCode() + " created");
return antennaSpec.getAntennaSpecId();
}
Meine REST-Ressourcenklasse ruft den Dienst der Einheit zu schaffen, indem die Methode erstellen aufrufen. Die Methode gibt die ID der neu erstellten Entität zurück. In der Ressource rufe ich dann meinen Dienst an, um die Entität zurückzugeben, die die ID übergibt, und dennoch ist der create timestamp null. Was ich getan habe, um dies zu erreichen, ist in meiner Ressource, ich habe die Entität entfernt und dann die Entität erneut abgerufen. Das funktioniert, aber ich mag es nicht, detach
für meine Service- oder Ressourcenklassen offen zu legen.
Jede Hilfe wäre willkommen.
Können Sie Ihre Tabelle DDL? Die 'columnDefinition' wird verwendet, wenn Hibernate die Datenbank für Sie generiert. Wenn Sie beispielsweise liquibase verwenden, muss die DDL nicht unbedingt übereinstimmen. – Andreas
Entschuldigung. Ich habe vergessen zu erwähnen, dass Hibernate nicht eingestellt ist, um die Datenbank für mich zu generieren. Nur um zu bestätigen, dass die vorhandene Datenbank mit meinen Entitäten funktioniert. –
Hier ist eine Idee ... Sie sehen sich das SQL der INSERT-Anweisung an und stellen den Leuten die DDL der Tabelle zur Verfügung. Dann Debugging ist möglich ... – DN1