Class SubQuery

java.lang.Object
org.iplass.mtp.entity.query.SubQuery
All Implemented Interfaces:
Serializable, ASTNode

public class SubQuery extends Object implements ASTNode
サブクエリを表す。 on句にて、上位クエリとの結合条件を指定し相関サブクエリとすることが可能。
たとえば、
 select dept.name, lastName, salary from Employee where salary > (select avg(salary) from Employee on .dept=dept)
 
とした場合、Employeeエンティティに定義される参照dept(のoid)で結合された相関サブクエリを表すことができる。
on句において、.(ドット)は、上位クエリの項目参照であることを示す。 2階層上位クエリの項目を指定したい場合は、..とする。
on句に指定可能な結合条件としては、通常の条件(where)句と異なり、EntityFieldとして参照を指定可能。 参照が指定された場合は、そのoidでの結合と同じ意味となる。 また、自己への参照を示す特別なリテラル定数として、"this"を利用可能。
 select name, (select max(amount) from Detail on .this=parent where status=1) from Master
 
とした場合、.thisは上位クエリのMasterのエンティティレコード自体を示す。
See Also:
  • Field Details

    • THIS

      public static final String THIS
      相関サブクエリ利用時、結合条件(ON句)にて自分自身への参照を表現する定数。
      See Also:
  • Constructor Details

    • SubQuery

      public SubQuery()
    • SubQuery

      public SubQuery(Query query)
    • SubQuery

      public SubQuery(Query query, Condition on)
  • Method Details

    • getQuery

      public Query getQuery()
    • setQuery

      public void setQuery(Query query)
    • getOn

      public Condition getOn()
    • setOn

      public void setOn(Condition on)
    • on

      public SubQuery on(Condition on)
      相関サブクエリとする場合の結合条件を指定。
      Parameters:
      on -
      Returns:
    • on

      public SubQuery on(EntityField mainQueryProperty, EntityField subQueryProperty, int unnestCount)
      相関サブクエリとする場合の結合条件を指定。 指定のunnestCount分上位のクエリと指定のプロパティで結合する。
      Parameters:
      mainQueryProperty - 上位クエリ側のプロパティ
      subQueryProperty - サブクエリ側のプロパティ
      unnestCount - 何階層上位のクエリと結合するかを指定
      Returns:
    • on

      public SubQuery on(String mainQueryProperyName, String subQueryPropertyName, int unnestCount)
      相関サブクエリとする場合の結合条件を指定。 指定のunnestCount分上位のクエリと指定のプロパティで結合する。
      Parameters:
      mainQueryProperyName - 上位クエリ側のプロパティ名
      subQueryPropertyName - サブクエリ側のプロパティ名
      unnestCount - 何階層上位のクエリと結合するかを指定
      Returns:
    • on

      public SubQuery on(String mainQueryProperyName, String subQueryPropertyName)
      相関サブクエリとする場合の結合条件を指定。 ひとつ上位のクエリと指定のプロパティで結合する。
      Parameters:
      mainQueryProperyName - 上位クエリ側のプロパティ名
      subQueryPropertyName - サブクエリ側のプロパティ名
      Returns:
    • toString

      public String toString()
      Specified by:
      toString in interface ASTNode
      Overrides:
      toString in class Object
    • accept

      public void accept(QueryVisitor visitor)
    • accept

      public ASTNode accept(ASTTransformer transformer)
      Specified by:
      accept in interface ASTNode
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface ASTNode
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface ASTNode
      Overrides:
      equals in class Object