是否可以将本机SQL查询的结果映射到Grails域类实例的集合?将本机SQL查询映射到Grails域类的结果
16
A
回答
18
import com.acme.domain.*
def sessionFactory
sessionFactory = ctx.sessionFactory // this only necessary if your are working with the Grails console/shell
def session = sessionFactory.currentSession
def query = session.createSQLQuery("select f.* from Foo where f.id = :filter)) order by f.name");
query.addEntity(com.acme.domain.Foo.class); // this defines the result type of the query
query.setInteger("filter", 88);
query.list()*.name;
2
你可以映射它自己没有太多的麻烦。或者,如果使用HQL,则可以使用select new map()
,然后以query.list().collect { new MyDomainObject(it) }
手动绑定参数。
+0
确实如此,但我认为这会比Hibernate经过大量优化的代码慢得多。 – 2010-01-20 01:28:23
8
或者使用Groovy SQL在Grails的应用
import groovy.sql.Sql
class TestQService{
def dataSource //Auto Injected
def getBanksForId(int bankid){
def sql = Sql.newInstance(dataSource)
def rows = sql.rows(""" Select BnkCode , BnkName from Bank where BnkId = ?""" , [bankid])
rows.collect{
new Bank(it)
}
}
class Bank{
String BnkCode
String BnkName
}
}
+0
Sql.newInstance(dataSource)失败,因为没有采用datasourc对象的方法。 – benstpierre 2013-09-13 22:58:54
相关问题
- 1. 将查询结果映射到属性
- 2. 将密码查询结果映射到域对象
- 3. 单列结果NHibernate SQL查询映射
- 4. 将SQL查询结果映射到DTO未被相应排序
- 5. 将Linq查询结果映射到DTO类
- 6. JPA本机查询结果集映射不工作?
- 7. 映射到本地SQL查询
- 8. 映射到Java数据类型的嵌套查询结果
- 9. 映射到域结果的NSDictionary错误
- 10. 将SQL SSRS映射结果映射到矩阵
- 11. 将查询结果映射到Java中的POJO构造函数
- 12. Spring-Data + QueryDSL + JDBC:如何将查询结果映射到域对象?
- 13. EclipseLink拒绝将PostgreSQL上的本机查询映射到实体
- 14. 将neo4j ogm查询结果映射到java对象
- 15. 使用AutoMapper将LINQ查询结果映射到ViewModel对象
- 16. Grails:将域类变量映射到Web API XML数据源
- 17. 如何将mysql表映射到Grails域类?
- 18. 如何将本机SQL查询映射到休眠中的dto对象?
- 19. 可以休眠hsql自动将查询结果映射到一个类?
- 20. 映射SQL结果到Java模型
- 21. C#SQL查询结果到文本框
- 22. 将域名映射到我的本地主机
- 23. 将SQL查询结果输出到GeoRSS
- 24. 休眠:映射结果集本地查询与@SqlResultSetMapping
- 25. 将查询映射到Apollo.js的React中
- 26. 将SQL表行映射到C++结构
- 27. 如何将Grails域对象映射到特定的mongodb表名
- 28. Grails将Java 8域对象的LocalDateTime映射到Gorm
- 29. 是否可以将根域URL映射到Grails的控制器?
- 30. 映射结果
,这是非常有益的! – Topera 2011-05-17 21:44:16
谢谢。它也帮助了我...... – 2011-09-14 06:07:14
在这个答案中我缺少的是'def sessionFactory'必须出现在控件中(如果你是在像我这样的控制器中执行此操作)。该字段被注入,然后您可以执行sessionFactory.currentSession。 – Jason 2015-06-24 16:23:15