@Temporal - AnnotationException

Status
Nicht offen für weitere Antworten.

klattiator

Mitglied
Hi, ich hab ein problem mit der @Tempral-Annotation:

die folgende Exception tritt ständig auf:
Java:
Exception in thread "AWT-EventQueue-0" org.hibernate.AnnotationException: @Temporal should be set on a java.util.Date or java.util.Calendar property: intro.Kunde.geburtsdatum

also das ist meine Entity-Klasse "Kunde":

Java:
package intro;

import java.io.Serializable;

import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;

@Entity
public class Kunde implements Serializable {

    private Integer id;
    private String vorname;
    private String nachname;
    private Date geburtsdatum;

    public Kunde() {
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Id
    @GeneratedValue
    public Integer getId() {
        return id;
    }

    @Temporal(javax.persistence.TemporalType.DATE)
    public Date getGeburtsdatum() {
        return geburtsdatum;
    }

    public void setGeburtsdatum(Date geburtsdatum) {
        this.geburtsdatum = geburtsdatum;
    }

    public String getNachname() {
        return nachname;
    }

    public void setNachname(String nachname) {
        this.nachname = nachname;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }
}


kann mir aber nicht erklären warum der fehler kommt, denn die Temproal-Annotation steht ja wohl an der getGeburtsdatum()-Methode. anfangs hat das ja auch alles genauso funktioniert, dann hatte ich mal statt java.util.Date, java.sql.Date verwendet und mit einem mal ging nix mehr.
also ich find das ziemlich kurios :bahnhof:
 
M

maki

Gast
k. A. ob dass der Grund ist, würde aber prinzipiell nur Felder und nicht Methoden annotieren.
 

sparrow

Top Contributor
Versuch mal die Klasse direkt anzusprechen statt über den Import, also:
Java:
package intro;
 
import java.io.Serializable;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
 
@Entity
public class Kunde implements Serializable {
 
    private Integer id;
    private String vorname;
    private String nachname;
    private java.util.Date geburtsdatum;
 
    public Kunde() {
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
    @Id
    @GeneratedValue
    public Integer getId() {
        return id;
    }
 
    @Temporal(javax.persistence.TemporalType.DATE)
    public java.util.Date getGeburtsdatum() {
        return geburtsdatum;
    }
 
    public void setGeburtsdatum(java.util.Date geburtsdatum) {
        this.geburtsdatum = geburtsdatum;
    }
 
    public String getNachname() {
        return nachname;
    }
 
    public void setNachname(String nachname) {
        this.nachname = nachname;
    }
 
    public String getVorname() {
        return vorname;
    }
 
    public void setVorname(String vorname) {
        this.vorname = vorname;
    }
}
 

klattiator

Mitglied
Also ich hab das Geburtsdatum mal aus der Klasse rausgenommen. Da kam dann erstmal kein Fehler mehr. Dann hab ich es wieder reingenommen und mit @Transient versehen. Ging auch noch. Und als ich es dann wieder mit @Temporal annotiert hab gings erstaunlicher Weise immer noch!! ???:L

Kapier ich zwar nicht aber wenns wieder funktioniert is ja alles in Butter.
 
M

maki

Gast
Würde mir mal ansehen welchen Datentyp für das Feld die normale Temporal Annotation erzeugt, vielleicht liegt der der Hund begraben...
 

tfa

Top Contributor
Wahrscheinlich hast du das Projekt nicht kompiliert, oder nicht nicht deployt. Oder das falsche kompiliert oder deployt. Oder das falsche getestet. Typische unerklärlich Fehler, die auf einmal nicht mehr auftreten.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben