findSingleAttribute
执行查询以检索单个列的值。
要检索特定模型的单个属性的值,我们使用 findSingleAttribute
。我们需要使用 select()
方法来选择要检索值的列。
示例:单个属性
var cust = QCustomer.alias();
String name = new QCustomer()
.select(cust.name)
.id.equalTo(42)
.findSingleAttribute();
这会转换为仅在选择子句中具有单个属性的 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 函数时,有时我们需要使用 ::type
来表示我们准备通过 JDBC 获取的逻辑类型。在下面的示例中,我们通过 ::BigDecimal
转换 sql 函数结果,以便 Ebean 通过 JDBC 将函数结果作为 BigDecimal 读取。
type 是 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();
上述使用 ::BigDecimal
,以便将 sql 函数的结果作为 BigDecimal 读取。
findSingleAttributeList
与 findSingleAttribute 相同,但返回结果列表。
示例
var cust = QCustomer.alias();
List<String> names
= new QCustomer()
.setDistinct(true)
.select(cust.name)
.order()
.name.asc()
.findSingleAttributeList();