【问题标题】:NULL value for LocalDateTime JPA 2.2 - PostgreSQLLocalDateTime JPA 2.2 的 NULL 值 - PostgreSQL
【发布时间】:2020-12-25 17:29:06
【问题描述】:

我无法为下面描述的字段设置空值。我想插入 NULL 作为默认值。

@Column(name = "answer_date",columnDefinition = "TIMESTAMP")
private LocalDateTime answerDate

当我设置 NULL 时,它显示以下错误:

Caused by: org.postgresql.util.PSQLException: ERROR: column "answer_date" is of type timestamp without time zone but expression is of type character varying 

我使用 EclipseLink 作为 JPA 实现。

【问题讨论】:

  • 你做了answerDate = null;? (我倾向于使用“DATETIME”,尽管这不相关。)
  • 是的,我是手动完成的。但是,null 已经是 java 中的默认值。执行数据库操作时出现问题。

标签: java postgresql jpa eclipselink jpa-2.2


【解决方案1】:

我认为这是一个已知问题。参考链接

(typeorm 也面临同样的问题)。

是的,错误消息来自 postgres jdbc 驱动程序。原因 这个错误是eclipselink使用varchar作为'null'的数据类型 价值。其他驱动程序可能会或可能不会忽略此错误的数据类型, postgres 驱动程序没有。

当您尝试将 answerDate 设置为 null 时,它会变成一个“null”字符串并提交到 postgres 数据库并导致此错误,因为“null”不是有效的时间戳格式。

如果 LocalDateTime 不存在,最好指定一个默认值。

private LocalDateTime answerDate = LocalDateTime.now();

在这种情况下,这个错误消息说“是时间戳类型......但是 表达式是文本类型.." 可以避免。

更新 该错误在 eclipseLink 2.7.6 版中已修复 (https://github.com/eclipse-ee4j/eclipselink/pull/415)

【讨论】:

  • 但是,我不想将当前日期设置为默认值。因为这个字段是用来知道什么时候回答的。创建对象时它应该为空。然后可以下次更新。
  • 我在本地尝试了您的问题,方法是将时间戳明确设置为 null,但它对我有用。我正在使用依赖项 spring-boot-starter-data-jpa 2.2.0.RELEASE,在 application.properties 中,我的 jpa 方言是 spring.jpa.properties.hibernate.dialect:org.hibernate.dialect.PostgreSQLDialect
  • 感谢您的帮助。您是否使用 LocalDateTime 作为 java 对象类型?我正在使用 eclipseLink 而不是 Hibernate:/
  • 我使用了 java.time.LocalDateTime 本身。但我使用的是spring-data-jpa。我不熟悉eclipseLink。让我看看有没有解决办法。
  • 请查看此链接:bugs.eclipse.org/bugs/show_bug.cgi?id=535431bugs.eclipse.org/bugs/show_bug.cgi?id=546312。我认为这是 typeorm 中的一个已知问题。第二个链接说 eclipseLink 2.7.6 版已经解决了这个问题。可以更新eclipseLink的版本试试吗?
【解决方案2】:

也许它对某人有用。 我遇到了同样的错误(我使用了 EclipseLink、Websphere 和 PostgreSQL)。 将 EclipseLink 更新到 2.7.8 后,我继续遇到同样的错误。 经过几个小时的搜索,我找到了以下解决方案:

将属性添加到 server.xml

中的 dataSource
stringType="unspecified"

或将stringType=unspecified 设置为 Postgres URL 的查询参数

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2018-02-12
    • 2018-03-18
    • 2013-03-04
    相关资源
    最近更新 更多