我试图在我的存储库中编写一个类似的查询方法
@Modifying
@Query("UPDATE foo SET some_timestamp = :someTimestamp WHERE id = :id")
void updateSomeTimestamp(@Param("id") long id, @Param("someTimestamp") Instant someTimestamp)
在执行代码时,我遇到了以下错误:
组织。postgresql。util。PSQLException:无法推断用于java实例的SQL类型。时间瞬间使用带有显式类型值的setObject()指定要使用的类型。
我是忘记了什么,还是Spring Data Jdbc根本不支持使用Instant作为参数?如果有,将来是否计划提供这种支助?
Spring Data JDBC不知道SQL语句所期望的类型。因此,它传递参数很长时间而不进行任何转换,并依赖数据库来正确处理参数。
有人可能会说,如果注册了匹配的转换器,它应该转换参数,但目前情况并非如此。
因此,目前的解决方案是自己转换参数,并将参数类型更改为java。util。日期
或JDBC驱动程序接受的任何内容。
对于那些来这里寻找生成java的解决方案的人。sql。时间戳
精度优于毫秒的实例(不推荐接受Nano的时间戳
构造函数):
Timestamp Timestamp=时间戳。从(瞬间。现在())
这假设您的操作系统支持的系统时钟精度优于毫秒。对于支持毫秒以上时间戳精度的数据库,例如支持微秒精度的PostgreSQL,它非常有用。
您可以将其转换回
Instant
或LocalDateTime
:
系统。出来println(timestamp.toInstant());//UTC
或
System.out.println(timestamp.toLocalDateTime()); // 本地时间
我还将重申stoetti在评论中提供的信息,根据stoetti提供的留档链接,https://jdbc.postgresql.org/documentation/head/8-date-time.html,PostgreSQL JDBC驱动程序确实将以下
java.time
类识别为时间戳:
java.time.LocalTime
作为time[没有TIMEZONE]
java。时间LocalDateTime
asTIMESTAMP[无时区]
java。时间OffsetDateTime
作为带有时区的时间戳
但不是java。时间正如斯托蒂所指出的,即时的
。
问题内容: 当使用各种JDBC模板方法之一时,我对如何迭代/滚动大结果集(不适合内存)感到困惑。即使没有直接公开Iterable接口,我至少也希望RowQuerybackHandler实例在查询执行后( 而 不是在堆溢出之后)执行时被调用。 我也有在看一个这个(这什么都没有改变,我尽管是在精神上类似这个帖子上的堆栈溢出),并在该岗位在spring论坛。后者似乎暗示在游标获取数据时确实应该调用回调处
谷歌云SQL提供的所有数据类型是什么? 我正在迁移一个数据库,所以我想知道谷歌云支持的数据类型。如果有任何官方链接,请提供。
我想让我的查询参数类是不可变的(通过构造函数设置公共final字段)。有没有一种方法可以通过构造函数强制SearchQueryParam实例的创建,并且不公开可怕的getters/setter? 下面是工作的示例代码: 但我希望我的SearchQueryParam类更像这样:
我在springdatajpa中执行更新查询时遇到问题。这是存储库层中的代码: 如您所见,我已经添加了@修改注释,但它仍然抛出“不支持DML操作”的错误,我正在使用Hibernate 5.4。非常感谢任何帮助。
我正在用spring数据创建一个带有空日期检查的spel动态查询。我的疑问是: 当我使用有效日期运行此查询时,它可以工作,但当我传递空日期时,我会得到以下错误: 堆栈跟踪:
我正在尝试使用 python 快速 API 框架代理外部网站(在不同容器上运行的花卉监控 URL): 它能够为每个路径代理容器URL。为了前任。 http://python_server:8001/monitor/dashboard -- 超文本传输协议://python_server: 8001/监视器/任务-- 它工作得很好。但是当PATH在URL中有一些查询参数时,它会失败。 为了前任。 (