java - 如何在querydsl中使用SQLExpression.datediff()返回的NumberExpression

标签 java spring hibernate datediff querydsl

我正在表上进行自连接并使用 SQLExpression.datediff ,如下所示:

QSomeTable tb1 = new QSomeTable("tb1");
QSomeTable tb2 = new QSomeTable("tb2");
NumberExpression<Integer> ne  = SQLExpression.datediff(DatePart.hour, tb1.time,     tb2.time);


query.from(tb1, tb2).where........list(ne);

这会产生以下异常:

org.springframework.dao.InvalidDataAccessApiUsageException:节点没有数据类型:org.hibernate.hql.internal.ast.tree.MethodNode

我尝试在列表子句中选择一些其他字段,它工作正常。

非常感谢您的帮助!

最佳答案

Querydsl JPA 查询不支持 SQLExpression,因为 JPQL 不支持它们。它们也很难模拟,因为这些表达式的序列化是特定于 SQL 方言的。

关于java - 如何在querydsl中使用SQLExpression.datediff()返回的NumberExpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24164326/

相关文章:

java - 如果不在数据库中,Android Studio SQLite 会保存标题吗?

spring - 为什么还要为 DAO 层烦恼

hibernate - 数据库连接用完了!

java - JPA @ManyToMany 关联似乎只能以一种方式工作

java - 使用 Hibernate @NaturalId 查找实体有什么好处

java - 与大字符串数据相比,使用 JSON 对象的重要性是什么?

java - spring data jpa "between"关键字

java - 多个 Unicode block 错误

java - Spring MVC 在数据库中创建新行,同时想要更新

java - JSON Spring 框架 Android