我是Vaadin的新手,我试图做一个简单的crud应用程序。 我是从Vaadin CRUD样本开始的;然后我修改后端项目以使用Hibernate和ui项目来管理各种表。 我可以为varchar和int这样的简单数据类型做到这一点,现在我会添加一个日期字段,但它会返回给我这个错误:
com.mysql.jdbc.MysqlDataTruncation:数据截断:日期值不正确:' \ xAC \ xED \ x00 \ x05sr \ x00 \ x0Djava.time.Ser \ x95] \ x84 \ xBA \ x1B" ħ\ XB2 \ X0C \ X00 \ x00xpw \ X07 \ X03 \ X00 \ X00 \ X07 \ XE1 \ X06 \ x1Ax'对于列' data_nascita'在第1行
" DATA_NASCITA"是我的mysql数据库上的日期列,实体有一个链接到该字段的LocalDate。
我发现这个新的java api只与Hibernate5兼容,所以在我的pom文件中我添加:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.10.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.1.0.Final</version>
</dependency>
并进入实体类我用java.time.LocalDate替换java.util.Date并删除注释@temporal。 该字段的输入类是Vaadin框架的DateField。
哪个可能是问题?
PS:我是盲人,所以我用Netbeans8编译代码但我用notepad ++修改代码所以,如果有人使用相同的技术并且没有任何问题,请告诉我因为我无法确定问题是否与构建过程有关。答案 0 :(得分:2)
IF 您的hibernate版本大于5.2.+
,您只需使用以下列:
@Column
private LocalDate date;
否则您需要在项目中安装hibernate-java8模块。
另一方面,如果hibernate版本&gt; = 5.2
,您不应该将hibernate-java8模块安装到项目中,可能会产生一些冲突,因为{{3} }模块被合并到hibernate。