Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate/SQL向结果中添加名称/键_Sql_Hibernate_Grails - Fatal编程技术网

Hibernate/SQL向结果中添加名称/键

Hibernate/SQL向结果中添加名称/键,sql,hibernate,grails,Sql,Hibernate,Grails,我将Grails用于一个web应用程序,并且必须创建一个数据库查询,在这里我使用一些值进行计算。 这些值来自我从中选择的表和grails应用程序。计算值也应传递给结果。计算本身和返回所有值的过程非常有趣。 我得到的结果是这样的(只需从表中选择所有列): 嗯。。。我现在要做的是创建我得到的所有结果的对象。 由于这是我用来查询数据库的hibernate会话,我可以选择在查询的执行中添加“addEntity(className)”,如下所示: def list = sessionFactory.cur

我将Grails用于一个web应用程序,并且必须创建一个数据库查询,在这里我使用一些值进行计算。 这些值来自我从中选择的表和grails应用程序。计算值也应传递给结果。计算本身和返回所有值的过程非常有趣。 我得到的结果是这样的(只需从表中选择所有列):

嗯。。。我现在要做的是创建我得到的所有结果的对象。 由于这是我用来查询数据库的hibernate会话,我可以选择在查询的执行中添加“addEntity(className)”,如下所示:

def list = sessionFactory.currentSession.createSQLQuery(query).addEntity(myClass).list()
[[id:19, version:15, some_bool: false, first_double: 49.04757, second_double: 8.37106, some_floatvalue: 1.0, text: 'some text', another_bool: false, calculation_result: 0, 0.03360229674009102]]
更好的是,我不必手动创建对象。 但问题是,我丢失了有关计算值的信息(上面代码段中的最后一个条目)

我可以想象有两种方法来实现这一点:hibernate给了我一些选项,比如addEntity(myClass)——就像我创建对象一样——来增加计算值

另一种方法是在sql查询中命名结果,因此我得到如下结果:

def list = sessionFactory.currentSession.createSQLQuery(query).addEntity(myClass).list()
[[id:19, version:15, some_bool: false, first_double: 49.04757, second_double: 8.37106, some_floatvalue: 1.0, text: 'some text', another_bool: false, calculation_result: 0, 0.03360229674009102]]
不管怎样,我都不知道该搜索什么,因为我对这两种技术都不太熟悉

总之,我想要的是一种简单、干净的方法来创建我的类的实例/对象,并获得计算结果。 如果您有进一步的想法来完成这一点-我感谢每一个提示和提示

即使是一些流行语也能帮助我实现这一目标

我希望我清楚我的问题——如果不告诉我;)


提前感谢而不是
org.hibernate.SQLQuery#addEntity
您希望使用
org.hibernate.SQLQuery#addRoot
,它返回一个
org.hibernate.SQLQuery.RootReturn
,可用于进一步定义结果映射。添加到3.6中,我很确定Grails使用的就是它

,所以您想用SQL查询结果指示实体吗?或者还有更多的内容吗?几乎-我想实例化它,并希望得到计算结果(在查询过程中计算)