Ok, donc je l'ai eu pour aller. Il a fallu plusieurs changements pour que les deux Hibernate & Springboot & Thymeleaf fonctionnent tous avec Java 8 - LocalDateTime.
Hibernate
Ajouter dépendances:
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")
compile group: 'org.hibernate', name: 'hibernate-java8'
Ajouter ce qui suit à application.properties:
spring.jackson.serialization.write_dates_as_timestamps=false
Les annotations sur mes entités ressemblent:
@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
private LocalDateTime somedate;
Bien que cela ne semble pas être strictement nécessaire.
thymeleaf
ajouter la dépendance:
compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-java8time', version: '3.0.0.RELEASE'
Assurez-vous qu'il correspond à votre version serpolet.
Dans n'importe quel HTML dans le projet, vos champs de dates devraient maintenant utiliser #temporals au lieu de #dates. à savoir:
<td th:text="${#temporals.format(object.somedate, 'yyyy-MM-dd HH:mm')}">12/12/2018</td>
botte printemps
Dans ma classe Application.java j'ai ajouté:
@Bean
public Java8TimeDialect java8TimeDialect() {
return new Java8TimeDialect();
}
Les ressources suivantes sont inestimables:
http://blog.codeleak.pl/2015/11/how-to-java-8-date-time-with-thymeleaf.html#comment-form (thymeleaf/Springboot)
https://www.thoughts-on-java.org/hibernate-5-date-and-time/ (Hibernate)
Vous pouvez utiliser les types 'java.time' avec n'importe quel fournisseur JPA qui prend en charge ces types, et puisque ces types sont standard dans JPA 2.2, tout fournisseur JPA 2.2 conforme – DN1
Spring-boot est une structure préconisée. Si vous savez comment obtenir Springboot sur JPA2.2, s'il vous plaît faites le moi savoir. –
Essayez de supprimer @Temporal (TemporalType.TIMESTAMP) de vos champs d'entité. – Justas