如何使用Hibernate5和Vaadin8使用java.time.LocalDate?

时间:2017-06-26 15:11:55

标签: maven java-8 hibernate-5.x vaadin8

我是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 ++修改代码所以,如果有人使用相同的技术并且没有任何问题,请告诉我因为我无法确定问题是否与构建过程有关。

1 个答案:

答案 0 :(得分:2)

IF 您的hibernate版本大于5.2.+,您只需使用以下列:

@Column
private LocalDate date;

否则您需要在项目中安装hibernate-java8模块。

另一方面,如果hibernate版本&gt; = 5.2,您不应该将hibernate-java8模块安装到项目中,可能会产生一些冲突,因为{{3} }模块被合并到hibernate。