2015-11-23 17 views
9

Đã quyết định cập nhật lên Hibernate 5 để xóa ngày hiện tại thành chuyển đổi LocalDateTime. Tôi đã cài đặt hibernate-java8 artifact từ Maven. Sau đó, tôi thay thế ngủ đông thời gian ngày thực thể của tôi đểJava 8 + Hibernate 5 MySQL TIMESTAMP/DATETIME để ánh xạ LocalDateTime

@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; 

ngoại lệ này được ném

org.hibernate.AnnotationException: @Temporal chỉ nên được đặt trên một java.util.Date hoặc java.util. bất động sản Lịch

Nếu tôi loại bỏ các @Temporal sau đó ngoại trừ trở nên

Clas sCastException: java.util.Date không thể truyền sang java.time.LocalDateTime

Tôi nghĩ Java 8 + Hibernate 5 hỗ trợ LocalDateTime? Xin cho biết.

+0

Lần cuối cùng tôi chọn, nó chỉ hỗ trợ Ngày và Lịch. https://docs.oracle.com/javaee/6/api/javax/persistence/Temporal.html – bmarkham

+2

Xin chào, tôi đang sử dụng Java 8 và tôi cũng đọc: http://stackoverflow.com/a/32680455, nói LocalDateTime được hỗ trợ trong tạo tác hibernate-java8. Tôi không hoàn toàn hiểu làm thế nào hibernate xử lý các loại ngoài việc chuyển đổi vì vậy tôi cần một số giúp đỡ –

+0

Rất tiếc, xin lỗi, đã không nhận thấy rằng bài viết là một bài viết cũ – bmarkham

Trả lời

3

Chỉ cần xóa dòng: @Temporal (TemporalType.TIMESTAMP) trong mỗi trường hợp bạn xác định.

Hibernate 5 đọc LocalDateTime làm loại và chèn chính xác dữ liệu vào cơ sở dữ liệu dưới dạng dấu thời gian. Không có nhiều thông tin vào lúc này do thực tế là họ đã phát hành sản phẩm và tài liệu sẽ theo sau.

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

@Column(name = "created", columnDefinition="TIMESTAMP") 
private LocalDateTime created; 
Các vấn đề liên quan