java - JPA/Hibernate 分页 - 使用 @Where 对 @Inheritance(strategy = InheritanceType.JOINED) 的错误 COUNT 查询
问题描述
有人可以帮帮我吗?我正在尝试使用继承类中的 where 子句将 spring 数据 JPA 与软删除一起使用。但是,当 Pageable 类生成其查询以计算行数时,似乎没有考虑继承。
ClassA 类(基类):<- 删除的列在这里
@Entity
@Table(name = "SYS_ELEMENT")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DTYPE", discriminatorType = DiscriminatorType.STRING, length = 63) @DiscriminatorValue("Element")
@SQLDelete(sql = "UPDATE SYS_ELEMENT SET DELETED = 1, DELETED_ID = ID, DELETED_VERSION = VERSION WHERE ID = ? AND VERSION = ? ", check = ResultCheckStyle.COUNT)
@Where(clause="DELETED = 0" )
public class Element extends EntityBase {
}
ClassB 类(继承类):
@Entity
@Table(name = "SYS_FORM")
@DiscriminatorValue("Form")
public class Form extends Element {
}
我加载以下代码:
Pageable pageable = PageRequest.of(0, 10);
Page page = service.findByAll(pageable);
这是我的例外:
Hibernate:
/* select
count(generatedAlias0)
from
Form as generatedAlias0 */ select
count(form0_.id) as col_0_0_
from
sys_form form0_
where
(
form0_1_.DELETED = 0
)
2020-07-09 21:23:10.123 WARN 22464 --- [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 4104, SQLState: S0001
2020-07-09 21:23:10.123 ERROR 22464 --- [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper : The multi-part identifier "form0_1_.DELETED" could not be bound.
could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
org.hibernate.exception.SQLGrammarException: could not extract ResultSet
[Ljava.lang.StackTraceElement;@748df19a
如果我删除 where 子句,它会起作用。我不确定这是弹簧数据 JPA 还是 JPA 问题。
根据要求,这是一个简单的示例:
解决方案
这是 Hibernate 的一个问题。
您现在可以尝试旧的休眠版本5.4.4.Final或等到5.4.19发布。请注意以下项目的发布日期。
推荐阅读
- javascript - 如何让 jquery datepicker 无法工作克隆行
- html - 尽管指定了填充,为什么图像元素没有居中?
- laravel - 如何在 Laravel 8 中处理 NotFoundHttpException?
- arrays - 如何访问嵌套数组的最后一个索引
- discord - 是否有一个正在工作的解禁命令?
- ruby-on-rails - 如何在加载事件时将数据值传递给激励控制器
- java - 如何从 Java 中的外部库导入包?
- javascript - npm install firebase 总是失败
- swift - 如何刷新 Widget 数据?
- php - 将数字插件自定义字段添加到我的帐户页面 woocommerce