我正在编写从SQL Server DB获取数据的Java代码。我正在使用Spring Data 存储库和QueryDSL predicate 以及findAll(Predicate ..)
我需要在下面的WHERE子句中实现:WHERE CONVERT(nvarchar(24),myTable.Time_Stamp,21) > "some date as string"
它在SQL Server Studio中作为SQL工作。
下面是我在QueryDSL中定义 predicate 的方法:BooleanExpression nextEvents = Expressions.stringTemplate("CONVERT({0}, {1}, {2})","nvarchar(24)", myTable.timeStamp, "21").gt("some date as string");
我得到了以下异常:Incorrect syntax near '@P0'.
下面是查询的where调用和Hibernate生成的绑定:
where CONVERT(?, unifiedent0_.Time_Stamp, ?)>? order by unifiedent0_.Time_Stamp asc offset 0 rows fetch next ? rows only
: binding parameter [1] as [VARCHAR] - [nvarchar(24)]
: binding parameter [2] as [VARCHAR] - [21]
: binding parameter [3] as [VARCHAR] - [2022-09-20 09:56:32.077-113]
在我看来,这一切都是正确的:3?我期望看到的标志和装订。
queryDSL表达式有什么问题?
谢谢你。
1条答案
按热度按时间ymzxtsji1#
我决定放弃QueryDSL而使用JPQL。
它起作用了。
查询为: