findSingleAttribute

1つの列の値を取得するクエリを実行します。

特定のモデルの1つのプロパティから値を取得するにはfindSingleAttributeを使用します。 どの列の値を取得するかを選択するには、select()メソッドを使用する必要があります。

例: 1つのプロパティ

var cust = QCustomer.alias();

String name = new QCustomer()
    .select(cust.name)
    .id.equalTo(42)
    .findSingleAttribute();

これは、以下のようなselect句に単一のプロパティのみを持つSQLクエリに変換されます。

select t0.name from customers t0 where t0.id = 42

例: SQL関数

List<String> names =
  new QContact()
    .select("concat(lastName,', ',firstName)")
    .lastName.startsWith("A")
    .findSingleAttributeList();

結果タイプのキャスト

SQL関数を使用する場合、JDBC経由で取得する論理型を示すために::typeを使用する必要があります。次の例では、Ebeanが関数の結果をJDBC経由でBigDecimalとして読み取れるように、SQL関数結果を::BigDecimal経由でキャストします。

はEbeanがサポートする任意のスカラー型の短縮名です。最も一般的なのはBigDecimal、Long、Stringですが、Ebeanがサポートする任意のスカラー型を使用できます。

例: SQL関数

// given route is a Postgis geometry(linestring,4326)
// return the distance between the start and end points

BigDecimal routeDistance =
  new QTrip()
    .select("ST_Distance(ST_StartPoint(route), ST_EndPoint(route))::BigDecimal")
    .id.eq(tripId)
    .findSingleAttribute();

上記では、SQL関数の結果をBigDecimalとして読み取るために::BigDecimalを使用しました。

findSingleAttributeList

findSingleAttributeと同じですが、結果のリストを返します。

var cust = QCustomer.alias();

List<String> names
  = new QCustomer()
    .setDistinct(true)
    .select(cust.name)
    .order()
      .name.asc()
    .findSingleAttributeList();