SubQueryHelper.java
package com.github.mygreen.sqlmapper.metamodel.support;
import com.github.mygreen.sqlmapper.metamodel.EntityPath;
import com.github.mygreen.sqlmapper.metamodel.PropertyPath;
import com.github.mygreen.sqlmapper.metamodel.expression.SubQueryExpression;
import com.github.mygreen.sqlmapper.metamodel.operation.SubQueryMeta;
import com.github.mygreen.sqlmapper.metamodel.operation.SubQueryOperation;
/**
* サブクエリ式を組み立てるときのヘルパークラス。
*
* @author T.TSUCHIE
*
*/
public class SubQueryHelper {
/**
* 抽出対象のエンティティを指定して、サブクエリのインスタンスを作成します。
*
* @param entityPath 抽出対象のテーブルのエンティティ
* @return サブクエリの式
*/
@SuppressWarnings("rawtypes")
public static SubQueryExpression<?> from(final EntityPath<?> entityPath) {
SubQueryMeta queryMeta = new SubQueryMeta();
queryMeta.setEntityPath(entityPath);
return new SubQueryOperation(queryMeta);
}
/**
* 抽出対象のエンティティ(テーブル)とプロパティ(カラム)指定して、サブクエリのインスタンスを作成します。
*
* @param <T> 抽出対象のプロパティ(カラム)の型
* @param entityPath 抽出対象のテーブルのエンティティ
* @param include 抽出対象のカラムのプロパティ
* @return サブクエリの式
*/
public static <T> SubQueryExpression<T> from(final EntityPath<?> entityPath, final PropertyPath<T> include) {
SubQueryMeta queryMeta = new SubQueryMeta();
queryMeta.setEntityPath(entityPath);
queryMeta.addInclude(include);
return new SubQueryOperation<>(queryMeta);
}
}