Class CriteriaQueryBuilder<V,T>

java.lang.Object
io.leandev.appfuse.jpa.CriteriaQueryBuilder<V,T>
Type Parameters:
V - 查詢結果的類型
T - 實體的類型

public class CriteriaQueryBuilder<V,T> extends Object

JPA Criteria 查詢建構器

提供流暢的 API 來建立 JPA Criteria 查詢。

  • Constructor Details

    • CriteriaQueryBuilder

      public CriteriaQueryBuilder(jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, Class<V> valueType)
      建立查詢建構器
      Parameters:
      criteriaBuilder - JPA CriteriaBuilder
      valueType - 查詢結果的類型
    • CriteriaQueryBuilder

      public CriteriaQueryBuilder(jakarta.persistence.EntityManager entityManager, Class<V> valueType)
      建立查詢建構器
      Parameters:
      entityManager - JPA EntityManager
      valueType - 查詢結果的類型
    • CriteriaQueryBuilder

      public CriteriaQueryBuilder(jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder)
      建立查詢建構器(延遲指定結果類型)
      Parameters:
      criteriaBuilder - JPA CriteriaBuilder
    • CriteriaQueryBuilder

      public CriteriaQueryBuilder(jakarta.persistence.EntityManager entityManager)
      建立查詢建構器(延遲指定結果類型)
      Parameters:
      entityManager - JPA EntityManager
  • Method Details

    • of

      public static <V,T> CriteriaQueryBuilder<V,T> of(jakarta.persistence.EntityManager entityManager, Class<V> valueType)
      建立查詢建構器
      Type Parameters:
      V - 查詢結果的類型
      T - 實體的類型
      Parameters:
      entityManager - JPA EntityManager
      valueType - 查詢結果的類型
      Returns:
      查詢建構器實例
    • of

      public static <V,T> CriteriaQueryBuilder<V,T> of(jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, Class<V> valueType)
      建立查詢建構器
      Type Parameters:
      V - 查詢結果的類型
      T - 實體的類型
      Parameters:
      criteriaBuilder - JPA CriteriaBuilder
      valueType - 查詢結果的類型
      Returns:
      查詢建構器實例
    • of

      public static <V,T> CriteriaQueryBuilder<V,T> of(jakarta.persistence.EntityManager entityManager)
      建立查詢建構器(延遲指定結果類型)
      Type Parameters:
      V - 查詢結果的類型
      T - 實體的類型
      Parameters:
      entityManager - JPA EntityManager
      Returns:
      查詢建構器實例
    • of

      public static <V,T> CriteriaQueryBuilder<V,T> of(jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder)
      建立查詢建構器(延遲指定結果類型)
      Type Parameters:
      V - 查詢結果的類型
      T - 實體的類型
      Parameters:
      criteriaBuilder - JPA CriteriaBuilder
      Returns:
      查詢建構器實例
    • from

      public CriteriaQueryBuilder<V,T> from(Class<T> entityType)
      設定查詢的來源實體
      Parameters:
      entityType - 實體類型
      Returns:
      此建構器
    • from

      public CriteriaQueryBuilder<V,T> from(Class<T> entityType, String alias)
      設定查詢的來源實體(含別名)
      Parameters:
      entityType - 實體類型
      alias - 別名
      Returns:
      此建構器
    • join

      public CriteriaQueryBuilder<V,T> join(String property, jakarta.persistence.criteria.JoinType joinType, String alias)
      加入關聯
      Parameters:
      property - 關聯屬性名稱
      joinType - 關聯類型
      alias - 別名
      Returns:
      此建構器
    • join

      public CriteriaQueryBuilder<V,T> join(String property, jakarta.persistence.criteria.JoinType joinType)
      加入關聯
      Parameters:
      property - 關聯屬性名稱
      joinType - 關聯類型
      Returns:
      此建構器
    • join

      public CriteriaQueryBuilder<V,T> join(String property, String alias)
      加入 INNER JOIN 關聯
      Parameters:
      property - 關聯屬性名稱
      alias - 別名
      Returns:
      此建構器
    • join

      public CriteriaQueryBuilder<V,T> join(String property)
      加入 INNER JOIN 關聯
      Parameters:
      property - 關聯屬性名稱
      Returns:
      此建構器
    • distinct

      public CriteriaQueryBuilder<V,T> distinct()
      設定 DISTINCT 查詢
      Returns:
      此建構器
    • orderBy

      public CriteriaQueryBuilder<V,T> orderBy(org.springframework.data.domain.Sort sort)
      設定排序
      Parameters:
      sort - Spring Data Sort 物件
      Returns:
      此建構器
    • count

      public CriteriaQueryBuilder<V,T> count()
      設定為計數查詢
      Returns:
      此建構器
    • where

      public CriteriaQueryBuilder<V,T> where(Filter filter)
      設定查詢條件
      Parameters:
      filter - 過濾條件
      Returns:
      此建構器
    • build

      public jakarta.persistence.criteria.CriteriaQuery<V> build()
      建構 CriteriaQuery
      Returns:
      JPA CriteriaQuery
    • buildCountQuery

      public jakarta.persistence.criteria.CriteriaQuery<Long> buildCountQuery()

      建構 count query,使用與 data query 相同的 filter。

      此方法建立獨立的 CriteriaQuery,避免 Hibernate 6 的 TableGroup 問題。

      Returns:
      count query