我正在做自学的测试任务。 我的堆栈是Spring Boot / H2 date base / Hibernate
我喜欢REST-full服务(实际上它不是,现在我正在尝试修复它)
我被告知我有很多错误的代码决策和错误,所以我决定修复它。 工作项目的初始状态是 - https://github.com/iliapastushenko/testtaskREST
我开始重构那个和我做过的第一件事 - 摆脱 jackson-datatype-jsr310因为它对我来说实际上是多余的 - 我已经从POM和ClientappApplication类中删除它并编辑了我的Application类字段" dateCreated":
@DateTimeFormat(pattern = "dd-MM-yyyy hh:mm:ss")
@Type(type="timestamp")
private LocalDateTime dateCreated;
所以,当我试图通过前端获得所需客户端的一个应用程序时 我得到这种类型的例外:
java.lang.IllegalArgumentException: Can not set java.time.LocalDateTime
field root.Model.Application.dateCreated to java.sql.Timestamp
你能不能给我一个提示 - 出了什么问题?
答案 0 :(得分:0)
使用hibernate-convertors将LocalDateTime转换为java.sql.Timestamp。您可以创建一个如下所示的休眠转换器:
@Converter(autoApply = true)
public class LocalDateAttributeConverter implements AttributeConverter<LocalDate, Date> {
@Override
public Date convertToDatabaseColumn(LocalDate locDate) {
return (locDate == null ? null : Date.valueOf(locDate));
}
@Override
public LocalDate convertToEntityAttribute(Date sqlDate) {
return (sqlDate == null ? null : sqlDate.toLocalDate());
}
}
有关详细信息,请查看此处:https://www.thoughts-on-java.org/persist-localdate-localdatetime-jpa/
答案 1 :(得分:0)
按属性修正:
<hibernate.version>5.2.12.Final</hibernate.version>
所以,自从Hibernate 5.2以来,LocalDateTime一切正常,而不是我之前被告知的Hibernate 5.0。