当前位置: 首页 > 知识库问答 >
问题:

addScalar是做什么的?

汪胤
2023-03-14

JavaDoc说:

SQLQuery org.hibernate.SQLQuery.addScalar(String columnAlias, Type type)

Declare a scalar query result

我知道 C# 中的 executeScalar 是什么,但这个标量和 C# 标量似乎完全不同。

共有3个答案

赫连泰宁
2023-03-14

addScalar 是 SQL 查询中给定键的返回类型信息。

示例:

Query a = new SqlQuery("Select username as un from users where ...");
a.addScalar("un", String);

如果您查询结果,结果将是String或其他类型(如果您指定)。

欧阳正德
2023-03-14

为了避免使用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

这将返回Object数组,但现在它将不使用ResultSetMetdata,而是从基础结果集中显式获取ID、NAME和BIRTHDATE列,分别为Long、String和短。这也意味着即使查询使用*并且可能返回超过三个列出的列,也只会返回这三个列。

可以省略所有或部分标量的类型信息。

session.createSQLQuery("SELECT * FROM CATS")
.addScalar("ID", Hibernate.LONG)
.addScalar("NAME")
.addScalar("BIRTHDATE")

这基本上与以前的查询相同,但现在 ResultSetMetaData 用于确定 NAME 和 BIRTHDATE 的类型,其中显式指定了 ID 的类型。

从这抄来的。

翁俊良
2023-03-14

这表示您希望查询结果返回单个命名列的对象,而不是实体。例如

createSQLQuery("SELECT COUNT(*) AS c FROM Users").addScalar("c").uniqueResult()

将返回单个长整型。如果指定多个标量,则结果将以 Object 数组的形式返回。它类似于 executeScalar,只是它适用于命名列,并且可以返回复合结果。

 类似资料:
  • 问题内容: JavaDoc说: 我知道C#中有什么,但是这个标量和C#标量似乎绝对不同。 问题答案: 这是在声明您希望查询结果返回单个命名列的对象,而不是实体。例如 将返回一个。如果您指定多个标量,则结果将以的数组形式返回。与之类似,除了它适用于命名列,并且可以返回复合结果。

  • 本文向大家介绍eval是做什么的?相关面试题,主要包含被问及eval是做什么的?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 它的功能是将对应的字符串解析成js并执行,应该避免使用js,因为非常消耗性能(2次,一次解析成js,一次执行)

  • 问题内容: 大约有一百万次问答,解释了诸如之类的选项,但是如果没有任何选择,它会自己做什么呢?它只是过滤标签吗? 问题答案: 根据PHP手册: 剥离标签,可选择剥离或编码特殊字符。 根据W3Schools: 过滤条或编码不需要的字符。 该过滤器将删除可能对您的应用程序有害的数据。它用于剥离标签并删除或编码不需要的字符。 现在,这并不能告诉我们太多。我们来看一些PHP源代码。 : 现在,让我们看看如

  • 问题内容: 有时我会创建一个函数,稍后再调用该函数。 例: 不知何故,某些功能无法调用。我必须在内部调用这些函数: 做什么和意味着,什么是这些区别/目的是什么? 问题答案: 只是jQuery的简写 它的设计目的(除其他事项外)是确保一旦页面的所有DOM元素准备就绪即可使用您的函数。 但是,我不认为这是您遇到的问题-您能否弄清楚“以某种方式,某些函数无法调用,而我必须在内部调用这些函数”的意思吗?也

  • 我一直在努力学习什么是EJB bean,这意味着他们的实例在池中被管理,等等。真的不能很好地掌握它们。 你能给我解释一下它们到底是什么吗(实际上对于一个Java程序员来说)?他们是做什么的?他们的目的是什么?为什么要真正使用它们?(为什么不坚持?)也许是一个示例应用程序? 请仅参考更新的信息,即。关于EJB的过时信息可能具有误导性。 对于EJB学习初学者,请注意: EJB基于分布式对象,这是指运行

  • 问题内容: 在对另一个问题的答案发表评论时,有人说他们不确定自己在做什么。所以,我问这个问题,以便在上有它的记录,以备将来参考:到底是做什么的? 问题答案: 使用装饰器时,你将一个功能替换为另一个。换句话说,如果你有一个装饰器 然后当你说 并且你的函数f将替换为。不幸的是,这意味着如果你然后说 它会打印出来,因为那是新功能的名称。实际上,如果你查看的文档字符串f,则将为空,因为没有文档字符串,因此