JavaDoc中说:
SQLQuery org.hibernate.SQLQuery.addScalar(String columnAlias, Type type)
Declare a scalar query result
我知道executeScalar
是在C#中,但这种标和C#标似乎是完全不同的。
JavaDoc中说:
SQLQuery org.hibernate.SQLQuery.addScalar(String columnAlias, Type type)
Declare a scalar query result
我知道executeScalar
是在C#中,但这种标和C#标似乎是完全不同的。
这是宣布你想查询的结果返回的对象为个人命名的列,而不是实体。 例如
createSQLQuery("SELECT COUNT(*) AS c FROM Users").addScalar("c").uniqueResult()
将返回一个Long
。 如果指定了多个标量,其结果会回来的数组Object
。 它类似executeScalar
除了它适用于指定的列,并可以返回一个复合的结果。
为了避免使用ResultSetMetadata,或者只是更加明确在什么是返回,可以使用addScalar()的开销:
session.createSQLQuery("SELECT * FROM CATS")
.addScalar("ID", Hibernate.LONG)
.addScalar("NAME", Hibernate.STRING)
.addScalar("BIRTHDATE", Hibernate.DATE)
这个查询指定:
the SQL query string
the columns and types to return
这将返回对象数组,但现在不再使用ResultSetMetdata,而是明确得到分别作为ID,姓名和出生日期列长,字符串和底层的ResultSet短。 这也意味着,只有这三列将被退回,即使查询使用*和可能获得超过三家上市列的更多。
这是可以省略的全部或部分的标量的类型信息。
session.createSQLQuery("SELECT * FROM CATS")
.addScalar("ID", Hibernate.LONG)
.addScalar("NAME")
.addScalar("BIRTHDATE")
这基本上是相同的查询和以前一样,但是现在使用ResultSetMetaData来确定NAME和出生日期,而ID的类型是明确指出的类型。
从复制此 。
addScalar
是返回类型的在SQL查询中给定的关键信息。
例:
Query a = new SqlQuery("Select username as un from users where ...");
a.addScalar("un", String);
如果查询结果,结果将是字符串或其它类型,如果你指定。
当你的bean有差异类型的多个字段这是用来和你想在从MySQL同类型的这些字段。 例如。
public class Example { Long id; String name; }
您可以使用添加标如下
session.createSQLQuery("SELECT * FROM tableName")
.addScalar("id", Hibernate.LONG)
.addScalar("name", Hibernate.STRING);