クラス Query
- すべての実装されたインタフェース:
java.io.Serializable
,ASTNode
public class Query extends java.lang.Object implements ASTNode
Entityの検索をする際利用するクエリーを表現するクラスです。 SQLライクな検索条件を指定可能です。
Queryをインスタンス化する方法として、2種類あります。
- EQL(Entity Query Language、SQLライクな文法)を文字列として指定し、newQuery()、newPreparedQuery()を通してQueryインスタンスを取得する方法
- コード上から、Queryのインスタンスをnewして条件を設定する方法
EQL(Entity Query Language)からQueryをインスタンス化
コード例:
Query q = Query.newQuery("select oid, name, orderId, totalamount, detail.amount from OrderEntity where orderDate > '2011-10-01' and orderStatus='5'"); or Query q = new Query("select oid, name, orderId, totalamount, detail.amount from OrderEntity where orderDate > '2011-10-01' and orderStatus='5'");※EQLの文法は、下記BNFを参考にしてください。
コードからQueryをインスタンス化
コード例:
Query q = new Query() .select("oid", "name", "orderId", "totalamount", "detail.amount") .from("OrderEntity") .where(new And().gt("orderDate", "2011-10-01").eq("orderStatus", "5"));
EQLのBNF
※BNFを拡張した記述式の説明
・[] = オプションの要素
・{} = グループ化された要素
・* = 0回以上の繰り返し
・"" = 明示的な文字列(BNFの式やシンボルではない)を示す
<query> ::= <select clause> <from clause> [<refer clause>] [<where clause>] [<group by clause>] [<having clause>] [<order by clause>] [<limit clause>]
<select clause> ::= SELECT [DISTINCT] <value expression> {,<value expression>}*
<from clause> ::= FROM <entity name>
<refer clause> ::= REFER <reference> [ON <condition>] [AS OF <value expression>] {,REFER <reference> [ON <condition>] [AS OF <value expression>]}*
<where clause> ::= WHERE <condition>
<group by clause> ::= GROUP BY <value expression> {,<value expression>}* [ROLLUP | CUBE]
<having clause> ::= HAVING <condition>
<order by clause> ::= ORDER BY <sort spec> {,<sort spec>}*
<sort spec> ::= <value expression> [ASC | DESC] [NULLS FIRST | NULLS LAST]
<limit clause> ::= LIMIT 件数 [OFFSET 開始行]
<condition> ::= <and> | <or> | <not> | <paren>
<and> ::= <condition> {AND <condition>}*
<or> ::= <condition> {OR <condition>}*
<not> ::= NOT <paren>
<paren> ::= <predicate> | (<condition>)
<predicate> ::= <comparison predicate> | <between> | <contains> | <in> | <is not null> | <is null> | <like>
<comparison predicate> ::= <value expression> <comparison operator> <value expression>
<comparison operator> ::= = | > | >= | < | <= | !=
<between> ::= <value expression> BETWEEN <value expression> AND <value expression>
<contains> ::= "CONTAINS('" <full text search expression> "')"
<in> ::= <simple in> | <row value list in> | <subquery in>
<simple in> ::= <value expression> IN (<value expression> {,<value expression>}*)
<row value list in> ::= (<value expression> {,<value expression>}*) IN (<row value list> {,<row value list>}*)
<row value list> ::= (<value expression> {,<value expression>}*)
<subquery in> ::= {<value expression> IN <subquery>} | {(<value expression> {,<value expression>}*) IN <subquery>}
<is not null> ::= <value expression> IS NOT NULL
<is null> ::= <value expression> IS NULL
<like> ::= <value expression> LIKE "'"<string>"'" [CS | CI]
<value expression> ::= <polynomial> | <term> | <minus sign> | <paren value>
<polynomial> ::= <value expression> {+ <value expression> | - <value expression>}*
<term> ::= <value expression> {"*" <value expression> | / <value expression>}*
<minus sign> ::= - <paren value>
<paren value> ::= <primary value> | (<value expression>)
<primary value> := <aggregate> | <array value> | <case> | <entity field> | <function> | <cast> | <literal> | <scalar subquery> | <window function>
<aggregate> ::= {AVG | MAX | MEDIAN | MIN | MODE | SUM | STDDEV_POP | STDDEV_SAMP | VAR_POP | VAR_SAMP}(<value expression>) | COUNT([DISTINCT] [<value expression>]) | LISTAGG([DISTINCT] <value expression>[,<string literal>]) [WITHIN GROUP(ORDER BY <sort spec> {,<sort spec>}*)]
<array value> ::= "ARRAY[" <value expression> {,<value expression>}* "]"
<case> ::= CASE WHEN <condition> THEN <value expression> {WHEN <condition> THEN <value expression>}* [ELSE <value expression>] END
<entity field> ::= <property name> | <reference>.<property name> | <correlated entity field>
<reference> ::= <reference name>{.<reference name>}*
<function> ::= <function name>() | <function name>(<value expression>{,<value expression>}*)
<function name> ::= REPLACE | UPPER | LOWER | CONCAT | SUBSTR | INSTR | CHAR_LENGTH | MOD | SQRT | POWER | ABS | CEIL | FLOOR | ROUND | TRUNCATE | SIN | COS | TAN | ASIN | ACOS | ATAN | ATAN2 | YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | DATE_ADD | DATE_DIFF | CURRENT_DATE | CURRENT_TIME | CURRENT_DATETIME | LOCALTIME
<cast> ::= CAST(<value expression> AS <data type>)
<data type> ::= STRING | INTEGER | FLOAT | DECIMAL | BOOLEAN | SELECT | DATE | TIME | DATETIME
<scalar subquery> ::= <subquery>
<window function> ::= <window function type> OVER([<window partition by clause>] [<window order by clause>])
<window function type> ::= {ROW_NUMBER | RANK | DENSE_RANK | PERCENT_RANK | CUME_DIST}() | <aggregate>
<window partition by clause> ::= PARTITION BY <value expression> {,<value expression>}*
<window order by clause> ::= ORDER BY <sort spec> {,<sort spec>}*
<literal> ::= <boolean literal> | <string literal> | <integer literal> | <floating point literal> | <fixed point literal> | <datetime literal> | <date literal> | <time literal> | <select value literal> | NULL
<boolean literal> ::= TRUE | FALSE
<string literal> ::= "'" 文字列 "'"
<integer literal> ::= [-]数字[数字]*[i|I]
<floating point literal> ::= [-]数字[数字]*.数字[数字]*[f|F]
<fixed point literal> ::= [-]数字[数字]*.数字[数字]*[g|G]
<datetime literal> ::= "'" yyyy-MM-dd HH:mm:ss.SSS "'"{m|M}
<date literal> ::= "'" yyyy-MM-dd "'"{d|D}
<time literal> ::= "'" HH:mm:ss "'"{t|T}
<select value literal> ::= "'" SelectValueのvalue "'"{s|S}
<entity name> ::= Entityの定義名
<property name> ::= Entity属性の定義名
<reference name> ::= Entity属性(参照)の定義名
<subquery> ::= (<query> [ON <condition>])
<correlated entity field> ::= .[.]*{THIS | <entity field> | <reference>}
※scalar subqueryは単一値(1行1列)を返すsubquery
※correlated entity fieldはsubqueryのON句でのみ利用可能
- 関連項目:
- 直列化された形式
-
コンストラクタの概要
-
メソッドの概要
修飾子とタイプ メソッド 説明 ASTNode
accept(ASTTransformer transformer)
void
accept(QueryVisitor visitor)
Query
copy()
boolean
equals(java.lang.Object obj)
Query
from(java.lang.String entityName)
Query
from(java.lang.String entityName, AsOf asOf)
From
getFrom()
GroupBy
getGroupBy()
Having
getHaving()
Limit
getLimit()
OrderBy
getOrderBy()
java.util.List<Refer>
getRefer()
Select
getSelect()
Where
getWhere()
Query
groupBy(java.lang.Object... groupingField)
groupBy項目を指定します。int
hashCode()
Query
having(java.lang.String havingClause)
Query
having(Condition havingCondition)
Query
hint(java.util.List<Hint> hintList)
Query
hint(Hint hint)
ヒントを追加します。boolean
isLocalized()
boolean
isVersiond()
推奨されていません。useisVersioned()
boolean
isVersioned()
Query
limit(int limit)
Query
limit(int limit, int offset)
Query
localized()
localized=trueに設定しますQuery
localized(boolean localized)
static PreparedQuery
newPreparedQuery(java.lang.String query)
queryでEQL文字列を指定してPreparedQueryインスタンスを生成します。static Query
newQuery(java.lang.String query)
EQL文字列を指定してQueryインスタンスを生成します。Query
order(SortSpec... sortSpec)
Refer
refer(java.lang.String referenceName)
Query
refer(java.lang.String referenceName, AsOf asOf)
Query
refer(java.lang.String referenceName, AsOf asOf, Condition onCondition)
Query
refer(java.lang.String referenceName, Condition onCondition)
Select
select()
Query
select(java.lang.Object... value)
selectを構築します。Query
select(HintComment hint, java.lang.Object... value)
ヒント句指定しつつ、selectを構築します。Query
selectAll(java.lang.String definitionName, boolean distinct, boolean withReferenceOidAndName)
Query
selectAll(java.lang.String definitionName, boolean distinct, boolean withReferenceOidAndName, boolean withReferenceVersion)
Query
selectAll(java.lang.String definitionName, boolean distinct, boolean withReferenceOidAndName, boolean withReferenceVersion, boolean withMappedByReference)
Query
selectAll(java.lang.String definitionName, HintComment hint, boolean distinct, boolean withReferenceOidAndName, boolean withReferenceVersion, boolean withMappedByReference)
Query
selectDistinct(java.lang.Object... value)
selectを構築します。Query
selectDistinct(HintComment hint, java.lang.Object... value)
selectを構築します。void
setFrom(From from)
void
setGroupBy(GroupBy groupBy)
void
setHaving(Having having)
void
setLimit(Limit limit)
void
setLocalized(boolean localized)
void
setOrderBy(OrderBy orderBy)
void
setRefer(java.util.List<Refer> refer)
void
setSelect(Select select)
void
setVersiond(boolean versioned)
推奨されていません。void
setVersioned(boolean versioned)
void
setWhere(Where where)
java.lang.String
toString()
Query
versioned()
versioned=trueに設定しますQuery
versioned(boolean versioned)
Where
where()
Query
where(java.lang.String whereClause)
Query
where(Condition whereCondition)
-
コンストラクタの詳細
-
Query
public Query() -
Query
-
Query
EQL文字列を指定してQueryインスタンスを生成します。- パラメータ:
query
-- 例外:
QueryException
-
-
メソッドの詳細
-
newQuery
EQL文字列を指定してQueryインスタンスを生成します。- パラメータ:
query
-- 戻り値:
-
newPreparedQuery
queryでEQL文字列を指定してPreparedQueryインスタンスを生成します。- パラメータ:
query
-- 戻り値:
-
copy
-
hashCode
public int hashCode() -
equals
public boolean equals(java.lang.Object obj) -
toString
public java.lang.String toString() -
getSelect
-
setSelect
-
getFrom
-
setFrom
-
getRefer
-
setRefer
-
getWhere
-
setWhere
-
getGroupBy
-
setGroupBy
-
getHaving
-
setHaving
-
getOrderBy
-
setOrderBy
-
getLimit
-
setLimit
-
isVersiond
@Deprecated public boolean isVersiond()推奨されていません。useisVersioned()
- 戻り値:
-
setVersiond
@Deprecated public void setVersiond(boolean versioned)推奨されていません。- パラメータ:
versioned
-
-
isVersioned
public boolean isVersioned() -
setVersioned
public void setVersioned(boolean versioned) -
isLocalized
public boolean isLocalized() -
setLocalized
public void setLocalized(boolean localized) -
accept
-
select
-
selectDistinct
selectを構築します。 その際distinctはtrueとします。- パラメータ:
value
- selectする項目(ValueExpression or String)- 戻り値:
-
selectDistinct
selectを構築します。 その際distinctはtrueとします。- パラメータ:
hint
- ヒントコメントvalue
- selectする項目(ValueExpression or String)- 戻り値:
-
select
selectを構築します。 その際distinctはfalse(デフォルト値)とします。- パラメータ:
value
- selectする項目(ValueExpression or String)- 戻り値:
-
select
ヒント句指定しつつ、selectを構築します。 その際distinctはfalse(デフォルト値)とします。- パラメータ:
hint
- ヒントコメントvalue
- selectする項目(ValueExpression or String)- 戻り値:
-
selectAll
public Query selectAll(java.lang.String definitionName, boolean distinct, boolean withReferenceOidAndName) -
selectAll
public Query selectAll(java.lang.String definitionName, boolean distinct, boolean withReferenceOidAndName, boolean withReferenceVersion) -
selectAll
public Query selectAll(java.lang.String definitionName, boolean distinct, boolean withReferenceOidAndName, boolean withReferenceVersion, boolean withMappedByReference) -
selectAll
public Query selectAll(java.lang.String definitionName, HintComment hint, boolean distinct, boolean withReferenceOidAndName, boolean withReferenceVersion, boolean withMappedByReference) -
hint
ヒントを追加します。 注意:selectAllを利用した場合、Selectインスタンスが初期化されるので、selectAllの後に呼び出すこと。- パラメータ:
hint
-- 戻り値:
-
hint
-
from
-
from
-
refer
-
refer
-
refer
-
refer
-
where
-
where
-
where
-
groupBy
groupBy項目を指定します。- パラメータ:
groupingField
- groupByする項目(ValueExpression or String)- 戻り値:
-
having
-
having
-
order
-
limit
-
limit
-
versioned
-
versioned
versioned=trueに設定します- 戻り値:
-
localized
-
localized
localized=trueに設定します- 戻り値:
-
accept
-