当前位置: 首页 > 知识库问答 >
问题:

JPA/Hibernate分页-使用@where对@inherity(strategy=inheritanceType.joined)进行坏计数查询

康赞
2023-03-14
@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  { 
}
@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

根据要求,这里有一个简单的示例:

  • https://github.com/caiquebispoferreira/springdatajpa
  • https://github.com/gtiwari333/hibernate-inherity-joined-with-where-bug(更简单的示例)

共有1个答案

苏嘉志
2023-03-14

这是Hibernate的一个问题。

您现在可以尝试旧的hibernate版本5.4.4.final,或者等到5.4.19发布。请注意发布日期的下列项目。

  • https://hibernate.atlassian.net/browse/hhh-14112
  • https://in.relation.to/hibernate-orm/
 类似资料:
  • 因此,我已经使用标准的Spring Data JPA接口完成了这项工作,该接口扩展了PagingAndSortingRepository,以便为REST API实现分页和排序。问题是,现在我想实现同样的事情,但现在只使用普通的JPA,到目前为止,我成功地让我的API分页,但排序根本不起作用。每次尝试设置参数(使用pageable.getsort()从可分页对象中),都会以查询错误结束(如果只是发送

  • 我有一个带有spring Boot(v2.3.3)和spring数据的spring web应用程序。我的评估表包含以下列: Id 我的用例是表中名称和地址的任何更改评估应该创建一个新行,版本以相同的id递增。 因此,基本上只有当地址或姓名更新时,才能在评估表中插入新记录。下面是一个示例: 现有记录: 例如,名称已更新为Ryan,应该有两行,如下所示: 因此,基本上,任何名称和地址的变化都应在评估表

  • 我们正在使用Spring Data JPA Repository。对于分页,我们将Pageable对象传递给JPA Repository findBy Methods。 因为在我们的UI中,我们不显示记录的总计数,所以我们不希望触发计数查询。有没有办法抑制分页期间触发的计数查询?

  • 如果不存在则创建表(int(11)不为空AUTO_INCREMENT,char(50)不为空,主键())engine=innoDB DEFAULT charset=latin1 AUTO_INCREMENT=11; 表tblcontent 如果不存在(int(11)不为NULL AUTO_INCREMENT,char(100)不为NULL,text不为NULL,date不为NULL,char(50

  • 问题内容: 我正在为我的系统中的实体实现“高级搜索”类功能,以便用户可以使用对该实体属性的多个条件(eq,ne,gt,lt,like等)来搜索该实体。我正在使用JPA的Criteria API动态生成Criteria查询,然后使用&支持分页。到现在为止一切都很好,但是现在我想在结果网格上显示结果总数,但是我没有看到直接获取Criteria查询总数的直接方法。 这是我的代码的样子: 我的结果集可能很

  • 根据Spring文档https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.special-返回的参数不应发出计数查询。 但是随着我的Spring,它变得有点奇怪。 当使用page运行页面请求时,它不需要计数查询,我认为这是正确的。 但当我使用页面(或以上)调用存储库时,它突然在选择查询之后执