@PrePersist mit entity-Vererbung

Ich habe einige Probleme mit der Vererbung und der @PrePersist annotation.
Mein Quellcode sieht wie folgt aus:

_die "Basis" - Klasse mit den kommentierten updateDates () - Methode:

@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Base implements Serializable{

    ...

    @Id
    @GeneratedValue
    protected Long id;
    ...
    @Column(nullable=false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date creationDate;
    @Column(nullable=false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModificationDate;
    ...
    public Date getCreationDate() {
        return creationDate;
    }
    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }
    public Date getLastModificationDate() {
        return lastModificationDate;
    }
    public void setLastModificationDate(Date lastModificationDate) {
        this.lastModificationDate = lastModificationDate;
    }
    ...
    @PrePersist
    protected void updateDates() {
      if (creationDate == null) {
        creationDate = new Date();
      }
      lastModificationDate = new Date();
    }
}

_ jetzt ist das "Kind" - Klasse, die erbt alle Methoden "und " Anmerkungen" von der Basis-Klasse:

@javax.persistence.Entity
@NamedQueries({
    @NamedQuery(name=Sensor.QUERY_FIND_ALL, query="SELECT s FROM Sensor s")
})
public class Sensor extends Entity {
    ...
    //additional attributes
    @Column(nullable=false)
    protected String value;
    ...
    //additional getters, setters
    ...
}

Wenn ich speichern/anhalten von Instanzen der Basis-Klasse auf die Datenbank, funktioniert alles einwandfrei. Die Termine werden immer aktualisiert.
Aber jetzt, wenn ich will, um fortbestehen einer Kind-Instanz, die Datenbank wirft folgenden Ausnahme:

MySQLIntegrityConstraintViolationException: Column 'CREATIONDATE' cannot be null

So, in meiner Meinung, dies wird verursacht, weil im Kind die Methode "@PrePersist protected void updateDates()" nicht aufgerufen wird,/wird aufgerufen, bevor anhaltenden die Instanzen in der Datenbank.

Was ist falsch an meinem code?

InformationsquelleAutor gerry | 2010-03-31
Schreibe einen Kommentar