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();