クラス Query

java.lang.Object
org.iplass.mtp.entity.query.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して条件を設定する方法
Queryのインスタンスを使って、EntityManager経由でEntityを検索します。

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句でのみ利用可能

関連項目:
直列化された形式
  • コンストラクタの詳細

  • メソッドの詳細

    • newQuery

      public static Query newQuery​(java.lang.String query)
      EQL文字列を指定してQueryインスタンスを生成します。
      パラメータ:
      query -
      戻り値:
    • newPreparedQuery

      public static PreparedQuery newPreparedQuery​(java.lang.String query)
      queryでEQL文字列を指定してPreparedQueryインスタンスを生成します。
      パラメータ:
      query -
      戻り値:
    • copy

      public Query copy()
      定義:
      copy インタフェース内 ASTNode
    • hashCode

      public int hashCode()
      定義:
      hashCode インタフェース内 ASTNode
      オーバーライド:
      hashCode クラス内 java.lang.Object
    • equals

      public boolean equals​(java.lang.Object obj)
      定義:
      equals インタフェース内 ASTNode
      オーバーライド:
      equals クラス内 java.lang.Object
    • toString

      public java.lang.String toString()
      定義:
      toString インタフェース内 ASTNode
      オーバーライド:
      toString クラス内 java.lang.Object
    • getSelect

      public Select getSelect()
    • setSelect

      public void setSelect​(Select select)
    • getFrom

      public From getFrom()
    • setFrom

      public void setFrom​(From from)
    • getRefer

      public java.util.List<Refer> getRefer()
    • setRefer

      public void setRefer​(java.util.List<Refer> refer)
    • getWhere

      public Where getWhere()
    • setWhere

      public void setWhere​(Where where)
    • getGroupBy

      public GroupBy getGroupBy()
    • setGroupBy

      public void setGroupBy​(GroupBy groupBy)
    • getHaving

      public Having getHaving()
    • setHaving

      public void setHaving​(Having having)
    • getOrderBy

      public OrderBy getOrderBy()
    • setOrderBy

      public void setOrderBy​(OrderBy orderBy)
    • getLimit

      public Limit getLimit()
    • setLimit

      public void setLimit​(Limit limit)
    • isVersiond

      @Deprecated public boolean isVersiond()
      推奨されていません。
      戻り値:
    • 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

      public void accept​(QueryVisitor visitor)
    • select

      public Select select()
    • selectDistinct

      public Query selectDistinct​(java.lang.Object... value)
      selectを構築します。 その際distinctはtrueとします。
      パラメータ:
      value - selectする項目(ValueExpression or String)
      戻り値:
    • selectDistinct

      public Query selectDistinct​(HintComment hint, java.lang.Object... value)
      selectを構築します。 その際distinctはtrueとします。
      パラメータ:
      hint - ヒントコメント
      value - selectする項目(ValueExpression or String)
      戻り値:
    • select

      public Query select​(java.lang.Object... value)
      selectを構築します。 その際distinctはfalse(デフォルト値)とします。
      パラメータ:
      value - selectする項目(ValueExpression or String)
      戻り値:
    • select

      public Query select​(HintComment hint, java.lang.Object... value)
      ヒント句指定しつつ、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

      public Query hint​(Hint hint)
      ヒントを追加します。 注意:selectAllを利用した場合、Selectインスタンスが初期化されるので、selectAllの後に呼び出すこと。
      パラメータ:
      hint -
      戻り値:
    • hint

      public Query hint​(java.util.List<Hint> hintList)
    • from

      public Query from​(java.lang.String entityName)
    • from

      public Query from​(java.lang.String entityName, AsOf asOf)
    • refer

      public Query refer​(java.lang.String referenceName, Condition onCondition)
    • refer

      public Query refer​(java.lang.String referenceName, AsOf asOf)
    • refer

      public Query refer​(java.lang.String referenceName, AsOf asOf, Condition onCondition)
    • refer

      public Refer refer​(java.lang.String referenceName)
    • where

      public Where where()
    • where

      public Query where​(java.lang.String whereClause)
    • where

      public Query where​(Condition whereCondition)
    • groupBy

      public Query groupBy​(java.lang.Object... groupingField)
      groupBy項目を指定します。
      パラメータ:
      groupingField - groupByする項目(ValueExpression or String)
      戻り値:
    • having

      public Query having​(Condition havingCondition)
    • having

      public Query having​(java.lang.String havingClause)
    • order

      public Query order​(SortSpec... sortSpec)
    • limit

      public Query limit​(int limit)
    • limit

      public Query limit​(int limit, int offset)
    • versioned

      public Query versioned​(boolean versioned)
    • versioned

      public Query versioned()
      versioned=trueに設定します
      戻り値:
    • localized

      public Query localized​(boolean localized)
    • localized

      public Query localized()
      localized=trueに設定します
      戻り値:
    • accept

      public ASTNode accept​(ASTTransformer transformer)
      定義:
      accept インタフェース内 ASTNode