postgresql springboot版本升级后“赋值表达式类型[java.lang.Object]与赋值路径类型不匹配”

r6vfmomb  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(179)

我们用以下字段定义了实体类:

@Column
private LocalDateTime updatedDate;

字符串
并创建以下函数:

create function now_utc() returns timestamp without time zone
    language sql
as
$$
  select now() at time zone 'utc';
$$;


我们正在更新springboot版本,并得到以下错误
org.hibernate.query.SemanticException:赋值表达式类型[java.lang.Object]与路径[alias_1370160613.updatedDate]的赋值路径类型[]不匹配
有很多建议如何修复它,但没有任何工作。这可能是因为特定版本的postgresql + springboot + hibernate?
springboot版本3.1.6
Hibernate版本6.2.13
https://docs.jboss.org/hibernate/orm/6.0/migration-guide/migration-guide.html
迁移指南
即时Map更改默认情况下,即时现在Map到类型代码SqlType.TIMESTAMP_UTC,如果可能,Map到带有时区的SQL类型timestamp,然后福尔斯返回到timestamp。由于此更改,某些数据库上可能会发生架构验证错误。
迁移到timestamp with time zone可能需要一个迁移表达式,如cast(old as timestamp with time zone)。
要保持向后兼容性,请将设置hibernate.type.preferred_instant_jdbc_type配置为TIMESTAMP。
使用hibernate.type.preferred_instant_jdbc_type和Instant type时也遇到了同样的问题。
有什么不舒服吗?

zengzsys

zengzsys1#

看起来像是因为我们正在使用函数hibernate定义正确的返回类型有问题。它总是返回java.Object。解决方案对我有效:

cast(now_utc() as timestamp)

字符串

相关问题