Class QueryRunner<T>

java.lang.Object
io.leandev.appfuse.jpa.QueryRunner<T>

public class QueryRunner<T> extends Object
  • Constructor Summary

    Constructors
    Constructor
    Description
    QueryRunner(jakarta.persistence.EntityManager entityManager)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    findAll(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery)
     
    org.springframework.data.domain.Page<T>
    findAll(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery, jakarta.persistence.criteria.CriteriaQuery<Long> countQuery, org.springframework.data.domain.Pageable pageable)
    執行分頁查詢,接受獨立的 data query 和 count query。
    findOne(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery)
     
    get(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • QueryRunner

      public QueryRunner(jakarta.persistence.EntityManager entityManager)
  • Method Details

    • findAll

      public org.springframework.data.domain.Page<T> findAll(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery, jakarta.persistence.criteria.CriteriaQuery<Long> countQuery, org.springframework.data.domain.Pageable pageable)

      執行分頁查詢,接受獨立的 data query 和 count query。

      此方法解決 Hibernate 6 的 TableGroup 問題:在 Hibernate 6 中, Predicate 綁定到特定 CriteriaQuery 的 SQM 樹,無法跨查詢重用。 調用者應使用 TupleQueryBuilder.build()TupleQueryBuilder.buildCountQuery() 來建構兩個獨立的查詢。

      Parameters:
      dataQuery - 資料查詢
      countQuery - 計數查詢
      pageable - 分頁參數
      Returns:
      分頁結果
    • findAll

      public List<T> findAll(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery)
    • findOne

      public Optional<T> findOne(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery)
    • get

      public T get(jakarta.persistence.criteria.CriteriaQuery<T> dataQuery)