Hibernate / SQL为结果添加名称/键

时间:2012-05-21 18:29:53

标签: sql hibernate grails

我正在使用Grails作为Web应用程序,并且必须创建一个数据库查询,我在其中使用某些值进行计算。 这些值来自我从AND和grails-application中选择的表。计算的值也应该传递给结果。计算本身和返回所有值的工作就像一个魅力。 我得到的结果是这样的(从表中选择所有columsn):

[[19, 15, false, 49.04757, 8.37106, 1.0, 'some text', false, 0, 0.03360229674009102]]
好吧......我现在要做的就是创造所有结果的对象。 由于这是我用来查询数据库的hibernate会话,我可以选择在执行查询时添加“addEntity(className)” - 就像这样:

def list = sessionFactory.currentSession.createSQLQuery(query).addEntity(myClass).list()

更好 - 我不必手动创建对象。 但问题是,我丢失了有关计算值的信息(上面的代码片段中的最后一个条目)

有两种方法我可以想象完成这个:hibernate给了我一些选项,比如addEntity(myClass) - 就像我创建我的对象一样 - 添加计算的值

另一种方法是在sql-query中命名结果,所以我得到这样的结果:

[[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]]

无论哪种方式,我甚至不知道要搜索什么,因为我对这两种技术都不熟悉。

总而言之,我想要的是一种简单干净的方法来创建我的类的实例/对象,另外还有计算结果。 如果你有进一步的想法来实现这一点 - 我感谢每一个提示和tipp

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

我希望我能清楚我的问题 - 如果不告诉我的话;)

提前致谢

1 个答案:

答案 0 :(得分:0)

您希望使用org.hibernate.SQLQuery#addEntity代替org.hibernate.SQLQuery#addRoot,而org.hibernate.SQLQuery.RootReturn会返回{{1}},可用于进一步定义结果映射。在3.6中添加,我很确定Grails使用的是