2015-11-23 24 views
9

Deciso di aggiornare a Hibernate 5 per rimuovere la conversione da Data a LocalDateTime esistente. Ho installato l'artefatto hibernate-java8 da Maven. Poi ho sostituito il mio hibernate data e ora entitàJava 8 + Hibernate 5 MySQL TIMESTAMP/DATETIME a LocalDateTime Mapping

@Column (name = "mis_a_jour_au", nullable = false) 
@Temporal (TemporalType.TIMESTAMP) 
private LocalDateTime misAJourAu; 

@Column (name = "envoi_au", nullable = false) 
@Temporal (TemporalType.TIMESTAMP) 
private LocalDateTime envoiAu; 

Questa eccezione è stata gettata

org.hibernate.AnnotationException: @Temporal deve essere impostato solo su un java.util.Date o java.util. proprietà Calendar

Se rimuovo il @Temporal poi l'eccezione diventa

Clas sCastException: java.util.Date non può essere lanciato a java.time.LocalDateTime

ho pensato Java 8 + Hibernate 5 supporta LocalDateTime? Si prega di avvisare.

+0

L'ultima volta che ho controllato, supporta solo la data e il calendario. https://docs.oracle.com/javaee/6/api/javax/persistence/Temporal.html – bmarkham

+2

Ciao, sto usando Java 8 e inoltre ho letto questo: http://stackoverflow.com/a/32680455, che dice che LocalDateTime è supportato nell'arte hibernate-java8. Non capisco come ibernare gestisca i tipi oltre al convertitore, quindi ho bisogno di aiuto –

+0

Oops, mi dispiace, non ho notato che l'articolo era un vecchio articolo – bmarkham

risposta

3

Basta rimuovere la riga: @Temporal (TemporalType.TIMESTAMP) in ogni caso lo si definisce.

Hibernate 5 legge LocalDateTime come tipo e inserisce correttamente i dati nel database come timestamp. Non ci sono molte informazioni in questo momento a causa del fatto che hanno rilasciato il prodotto e la documentazione seguirà.

0
@Column(name = "updated", columnDefinition="DATETIME") 
private LocalDateTime updated; 

@Column(name = "created", columnDefinition="TIMESTAMP") 
private LocalDateTime created;