2016-06-01 6 views
1

Ich sah this page, um eine alternative Klasse als java.util.Date für DATE Spalten in meinem Hibernate Mapping zu bekommen.Mapping ein Datum, ohne Zeit, in Joda/Hibernate

Ich habe festgestellt, dass keiner der nicht veralteten Typen einer DATE Spalte in SQL zugeordnet.

Ich möchte fragen, was ist der Joda-Typ, der SQL DATE zuordnet.

Zusätzliche Informationen: Wir betrachten Joda, da wir Probleme haben, java.util.Date zu verwenden, um ein Datum ohne Zeit darzustellen, da, wenn die Zeitzonen des Clients und des Servers nicht übereinstimmen, das Datum einen Tag früher erhalten kann. Es gibt eine Fülle von Fragen/Fragen, die jetzt offen sind. Um genau zu sein: Wenn der Client in einer positiven Zeitzone ist und der Server UTC oder eine negative Zeitzone spricht.

+0

Gemäß dieser http://stackoverflow.com/questions/8307593/joda-time-hibernate-persistentyearmonthday-deprecated möchten Sie PersistentLocalDate. – jtahlborn

Antwort

1

Da ich EclipseLink für Persistenz verwende, habe ich Joda-Time-Hibernate nie zuvor benutzt.

Anstatt Joda-Typen abzubilden, verwende ich immer eine Standard-JPA @Convert, um sie der Datenbank zuzuordnen.

Zum Beispiel ein einfacher, straight-forward-Wandler könnte wie folgt aussehen:

@Converter 
public class LocalDateToDateConverter implements AttributeConverter<LocalDate, Date> 
{ 
    @Override 
    public Date convertToDatabaseColumn(LocalDate attribute) 
    { 
     return attribute == null ? null : new Date(attribute.toDate().getTime()); 
    } 

    @Override 
    public LocalDate convertToEntityAttribute(Date dbData) 
    { 
     return dbData == null ? null : LocalDate.fromDateFields(dbData); 
    } 

} 

Wenn Sie auf jeden Fall die Spalt benötigen keine andere Möglichkeit, ein DATE und es gibt zu sein, könnte man es versuchen.