5 Stimmen

Java: JPA-Klassen, Refaktorierung von Date zu DateTime

Mit einer Tabelle, die mit diesem SQL erstellt wurde

Create Table X (
    ID varchar(4) Not Null,
    XDATE date
);

und eine wie folgt definierte Entitätsklasse

@Entity
@Table(name = "X")
public class X implements Serializable {
    @Id
    @Basic(optional = false)
    @Column(name = "ID", nullable = false, length = 4)
    private String id;
    @Column(name = "XDATE")
    @Temporal(TemporalType.DATE)
    private Date xDate; //java.util.Date
    ...
}

Mit dem oben genannten kann ich JPA verwenden, um eine objektrelationale Zuordnung zu erreichen. Allerdings ist die xDate Attribut kann nur Datumsangaben speichern, z. B. dd/MM/yyyy .

Wie kann ich die obige Funktion umgestalten, um ein vollständiges Datumsobjekt mit nur einem Feld zu speichern, d. h. dd/MM/yyyy HH24:mm ?

7voto

Pascal Thivent Punkte 548176

Wenn Sie auch Zeitinformationen auf Datenbankebene speichern möchten, verwenden Sie TemporalType.DATETIME :

@Column(name = "XDATE")
@Temporal(TemporalType.DATETIME)
private Date xDate; //java.util.Date

Verwenden Sie eine TIMESTAMP Spaltentyp auf der Datenbankebene (und xDate wird gespeichert als 'yyyy-MM-dd HH:mm:ss.S' ).

4voto

sblundy Punkte 59298

Haben Sie versucht, die @Temporal Wert zu TemporalType.DATETIME ? java.util.Date und java.sql.Date speichern beide Datums- und Zeitkomponenten, der TemporalType steuert, welchen Teil JPA speichert/beachtet; Datum, Zeit oder beides.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X