jp.go.nict.langrid.dao.hibernate
クラス QueryUtil

java.lang.Object
  上位を拡張 jp.go.nict.langrid.dao.hibernate.QueryUtil

public class QueryUtil
extends Object

検索クエリに関するユーティリティ。

バージョン:
$Revision: 12060 $
作成者:
$Author: nakaguchi $

コンストラクタの概要
QueryUtil()
           
 
メソッドの概要
static void assertValidColumnName(String name)
          カラム名として不正な文字が使われていないか確認する。
static String buildConditionsQuery(Class<?> entityClass, MatchingCondition[] conditions, Map<String,Class<?>> fields, Map<String,Object> parameters)
           
static
<T> String
buildConditionsQueryWithSearchSupports(MatchingCondition[] conditions, String elementAlias, Map<String,SearchSupport<T>> conditionBuilders, SearchSupport<T> defaultConditionBuilder, Map<String,Object> parameters)
           
static
<T extends AttributedElement<?>,U>
org.hibernate.Query
buildJoinSearchQuery(org.hibernate.Session session, Class<T> clazz, Class<U> joinedClass, String joinColumn, String joinedClassJoinColumn, Map<String,Class<?>> fields, MatchingCondition[] conditions, Order[] orders)
          ジョインを行う検索クエリを構築する。
static String buildOrderByQuery(Class<?> entityClass, Order[] orders)
          order by句を作成する。
static String buildOrderByQuery(Class<?> entityClass, String defaultTableAlias, Order[] orders)
          order by句を作成する。
static String buildOrderByQuery(Set<String> capitalIgnoreFields, Order[] orders)
          order by句を作成する。
static String buildOrderByQuerySub(Class<?> entityClass, String defaultTableAlias, Order[] orders)
          order by句を作成する。
static
<T> org.hibernate.Query
buildRowCountQuery(org.hibernate.Session session, Class<T> clazz, Map<String,Class<?>> fields, MatchingCondition[] conditions)
          件数を求めるクエリを構築する。
static
<T> org.hibernate.Query
buildRowCountQueryWithSearchSupports(org.hibernate.Session session, Class<?> clazz, Map<String,SearchSupport<T>> searchSupports, SearchSupport<T> defaultSearchSupport, String serviceGridId, boolean acrossGrids, MatchingCondition[] conditions, String... additionalConditions)
          件数を求めるクエリを構築する。
static
<T extends AttributedElement<?>>
org.hibernate.Query
buildSearchQuery(org.hibernate.Session session, Class<T> clazz, Map<String,Class<?>> fields, MatchingCondition[] conditions, Order[] orders)
          検索クエリを構築する。
static
<T> org.hibernate.Query
buildSearchQueryWithSearchSupports(org.hibernate.Session session, Class<T> clazz, Map<String,SearchSupport<T>> searchSupports, SearchSupport<T> defaultSearchSupport, MatchingCondition[] conditions, Order[] orders, String... additionalConditions)
          ビルダを使って検索クエリを構築する。
static org.hibernate.Query buildSearchQueryWithSearchSupports(org.hibernate.Session session, Map<String,SearchSupport<Service>> searchSupports, SearchSupport<Service> defaultSearchSupport, String serviceGridId, boolean acrossGrids, MatchingCondition[] conditions, Order[] orders, String... additionalConditions)
          ビルダを使って検索クエリを構築する。
static
<T> org.hibernate.Query
buildServiceRankingSearchQueryWithSearchSupports(org.hibernate.Session session, Map<String,SearchSupport<T>> searchSupports, SearchSupport<T> defaultSearchSupport, String serviceGridId, String nodeId, boolean acrossGrids, MatchingCondition[] conditions, Order[] orders, int sinceDays, String... additionalConditions)
          ビルダを使って検索クエリを構築する。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

QueryUtil

public QueryUtil()
メソッドの詳細

buildJoinSearchQuery

public static <T extends AttributedElement<?>,U> org.hibernate.Query buildJoinSearchQuery(org.hibernate.Session session,
                                                                                          Class<T> clazz,
                                                                                          Class<U> joinedClass,
                                                                                          String joinColumn,
                                                                                          String joinedClassJoinColumn,
                                                                                          Map<String,Class<?>> fields,
                                                                                          MatchingCondition[] conditions,
                                                                                          Order[] orders)
ジョインを行う検索クエリを構築する。 conditionsやordersは全てclazzに対しての指定として扱われる。

型パラメータ:
T - 検索するエンティティクラス
U - ジョインされるエンティティクラス
パラメータ:
session - セッション
clazz - エンティティクラス
joinedClass - ジョインされるクラス
joinColumn - clazzのジョインカラム
joinedClassJoinColumn - joinedClassのジョインカラム
fields - フィールド。これに含まれるものはフィールド、そうでないものは属性に対して絞り込みを行う
conditions - 条件
orders - ソート順
戻り値:
クエリ

buildSearchQuery

public static <T extends AttributedElement<?>> org.hibernate.Query buildSearchQuery(org.hibernate.Session session,
                                                                                    Class<T> clazz,
                                                                                    Map<String,Class<?>> fields,
                                                                                    MatchingCondition[] conditions,
                                                                                    Order[] orders)
検索クエリを構築する。

型パラメータ:
T - 検索するエンティティクラス
パラメータ:
session - セッション
clazz - エンティティクラス
fields - フィールド。これに含まれるものはフィールド、そうでないものは属性に対して絞り込みを行う
conditions - 条件
orders - ソート順
戻り値:
クエリ

buildSearchQueryWithSearchSupports

public static <T> org.hibernate.Query buildSearchQueryWithSearchSupports(org.hibernate.Session session,
                                                                         Class<T> clazz,
                                                                         Map<String,SearchSupport<T>> searchSupports,
                                                                         SearchSupport<T> defaultSearchSupport,
                                                                         MatchingCondition[] conditions,
                                                                         Order[] orders,
                                                                         String... additionalConditions)
ビルダを使って検索クエリを構築する。

型パラメータ:
T - 検索するエンティティクラス
パラメータ:
session - セッション
clazz - エンティティクラス
searchSupports - フィールド毎の検索サポート
defaultSearchSupport - フィールドがsearchSupportsにマッチしない場合に使用される検索サポート
conditions - 条件
orders - ソート順
additionalConditions - 追加の条件。andで連結される
戻り値:
クエリ

buildSearchQueryWithSearchSupports

public static org.hibernate.Query buildSearchQueryWithSearchSupports(org.hibernate.Session session,
                                                                     Map<String,SearchSupport<Service>> searchSupports,
                                                                     SearchSupport<Service> defaultSearchSupport,
                                                                     String serviceGridId,
                                                                     boolean acrossGrids,
                                                                     MatchingCondition[] conditions,
                                                                     Order[] orders,
                                                                     String... additionalConditions)
ビルダを使って検索クエリを構築する。 acrossGridsがtrueの場合、serviceGridIdのグリッドから呼び出せる他のグリッドのサービスも検索対象になる。

型パラメータ:
T - 検索するエンティティクラス
パラメータ:
session - セッション
clazz - エンティティクラス
searchSupports - フィールド毎の検索サポート
defaultSearchSupport - フィールドがsearchSupportsにマッチしない場合に使用される検索サポート
serviceGridId - 検索するサービスのグリッドID
acrossGrids - グリッドを跨いだ検索を行うかどうか(federatedUseAllowedは考慮される)
conditions - 条件
orders - ソート順
additionalConditions - 追加の条件。andで連結される
戻り値:
クエリ

buildServiceRankingSearchQueryWithSearchSupports

public static <T> org.hibernate.Query buildServiceRankingSearchQueryWithSearchSupports(org.hibernate.Session session,
                                                                                       Map<String,SearchSupport<T>> searchSupports,
                                                                                       SearchSupport<T> defaultSearchSupport,
                                                                                       String serviceGridId,
                                                                                       String nodeId,
                                                                                       boolean acrossGrids,
                                                                                       MatchingCondition[] conditions,
                                                                                       Order[] orders,
                                                                                       int sinceDays,
                                                                                       String... additionalConditions)
ビルダを使って検索クエリを構築する。 acrossGridsがtrueの場合、serviceGridIdのグリッドから呼び出せる他のグリッドのサービスも検索対象になる。

型パラメータ:
T - 検索するエンティティクラス
パラメータ:
session - セッション
clazz - エンティティクラス
searchSupports - フィールド毎の検索サポート
defaultSearchSupport - フィールドがsearchSupportsにマッチしない場合に使用される検索サポート
serviceGridId - 検索するサービスのグリッドID
acrossGrids - グリッドを跨いだ検索を行うかどうか(federatedUseAllowedは考慮される)
conditions - 条件
orders - ソート順
additionalConditions - 追加の条件。andで連結される
戻り値:
クエリ

buildRowCountQuery

public static <T> org.hibernate.Query buildRowCountQuery(org.hibernate.Session session,
                                                         Class<T> clazz,
                                                         Map<String,Class<?>> fields,
                                                         MatchingCondition[] conditions)
件数を求めるクエリを構築する。

型パラメータ:
T - 検索するエンティティクラス
パラメータ:
session - セッション
clazz - エンティティクラス
fields - フィールド。これに含まれるものはフィールド、そうでないものは属性に対して絞り込みを行う
conditions - 条件
戻り値:
クエリ

buildRowCountQueryWithSearchSupports

public static <T> org.hibernate.Query buildRowCountQueryWithSearchSupports(org.hibernate.Session session,
                                                                           Class<?> clazz,
                                                                           Map<String,SearchSupport<T>> searchSupports,
                                                                           SearchSupport<T> defaultSearchSupport,
                                                                           String serviceGridId,
                                                                           boolean acrossGrids,
                                                                           MatchingCondition[] conditions,
                                                                           String... additionalConditions)
件数を求めるクエリを構築する。

型パラメータ:
T - 検索するエンティティクラス
パラメータ:
session - セッション
clazz - エンティティクラス
searchSupports - フィールド毎の検索サポート
defaultSearchSupport - フィールドがsearchSupportsにマッチしない場合に使用される検索サポート
conditions - 条件
additionalConditions - 追加の条件。andで連結される
戻り値:
クエリ

assertValidColumnName

public static void assertValidColumnName(String name)
                                  throws IllegalArgumentException
カラム名として不正な文字が使われていないか確認する。

パラメータ:
name - 名前
例外:
IllegalArgumentException - 不正な文字が使われている

buildOrderByQuery

public static String buildOrderByQuery(Class<?> entityClass,
                                       Order[] orders)
order by句を作成する。

パラメータ:
entityClass - エンティティクラス
orders - オーダー
戻り値:
クエリ

buildOrderByQuery

public static String buildOrderByQuery(Class<?> entityClass,
                                       String defaultTableAlias,
                                       Order[] orders)
order by句を作成する。 orders内のエレメントでエイリアスの指定されていないフィールがあった場合、 defaultTableAlias + "."が付加される。

パラメータ:
defaultTableAlias - テーブルのデフォルトエイリアス名
orders - オーダー
戻り値:
クエリ

buildOrderByQuerySub

public static String buildOrderByQuerySub(Class<?> entityClass,
                                          String defaultTableAlias,
                                          Order[] orders)
order by句を作成する。 orders内のエレメントでエイリアスの指定されていないフィールがあった場合、 defaultTableAlias + "."が付加される。

パラメータ:
defaultTableAlias - テーブルのデフォルトエイリアス名
orders - オーダー
戻り値:
クエリ

buildOrderByQuery

public static String buildOrderByQuery(Set<String> capitalIgnoreFields,
                                       Order[] orders)
order by句を作成する。 capitalIgnoreFieldsに登録されているフィールドは、大文字小文字が無視される。

パラメータ:
capitalIgnoreFields - 大文字小文字を無視するフィールド名
orders - オーダー
戻り値:
クエリ

buildConditionsQuery

public static String buildConditionsQuery(Class<?> entityClass,
                                          MatchingCondition[] conditions,
                                          Map<String,Class<?>> fields,
                                          Map<String,Object> parameters)

buildConditionsQueryWithSearchSupports

public static <T> String buildConditionsQueryWithSearchSupports(MatchingCondition[] conditions,
                                                                String elementAlias,
                                                                Map<String,SearchSupport<T>> conditionBuilders,
                                                                SearchSupport<T> defaultConditionBuilder,
                                                                Map<String,Object> parameters)