1

我是 Vaadin 的新手,我正在尝试做一个简单的 crud 应用程序。我从 Vaadin CRUD 样本开始;然后我修改后端项目以使用 Hibernate 和 ui 项目来管理各种表。我可以对 varchar 和 int 等简单数据类型执行此操作,现在我要添加一个日期字段,但它会返回此错误:

com.mysql.jdbc.MysqlDataTruncation:数据截断:不正确的日期值:'\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\第 1 行的“data_nascita”列的 x00xpw\x07\x03\x00\x00\x07\xE1\x06\x1Ax'

“DATA_NASCITA”是我的 mysql DB 上的一个日期列,该实体有一个 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.util.Date 替换为 java.time.LocalDate 并删除注释@temporal。该字段的输入类是 Vaadin 框架的 DateField。

哪个可能是问题?

PS:我是盲人,所以我用Netbeans8编译代码,但是我用notepad++修改了代码,所以如果有人使用相同的技术并且没有任何问题,请告诉我,因为我不能确定问题所在是与构建过程有关的东西。

4

1 回答 1

2

如果您的休眠版本大于5.2.+您可以使用如下列:

@Column
private LocalDate date;

否则,您需要将hibernate-java8模块安装到您的项目中。

另一方面,如果 hibernate 版本 >= ,则不应将hibernate-java8模块安装到项目中,因为hibernate-java8模块已合并到 hibernate 中5.2,可能会产生一些冲突。

于 2017-06-26T16:01:31.623 回答