如何在Java服务层中访问Grails域类?

时间:2010-04-26 21:38:43

标签: grails grails-domain-class

如何在Java / Spring服务层中使用grails域类(在groovy中)。

当使用grails MVC时,一切都很好,因为我可以使用控制器来访问域对象并在其上调用CRUD和其他动态方法。但是,我想知道的是有一个干净的方法来从Java - 比如服务层。例如,我可能想要开发一个报告框架,我需要使用域对象来访问数据库。

我希望问题很明确。这应该是一个标准问题,每个人都必须在一个合理规模的项目中面对。我只是想知道它是如何解决的。可能我在这里遗漏了一些东西。

感谢。

3 个答案:

答案 0 :(得分:2)

org.codehaus.groovy.runtime.InvokerHelper使这个非常简单;请参阅此邮件列表主题:http://grails.1312388.n4.nabble.com/Calling-Dynamic-Finders-on-Domain-Class-via-the-MetaClass-td1596496.html

答案 1 :(得分:1)

示例代码段:

import my.package.User
import org.codehaus.groovy.runtime.InvokerHelper;


List allInstances = (List)InvokerHelper.invokeMethod(User.class, "list", null)); 


User one=(User)InvokerHelper.invokeMethod(User.class, "get", id); 

答案 2 :(得分:0)

如果InvokerHelper运行良好,如果您可以访问GORM类,我会在GORM调用周围放置包装函数 - 那么Java类就会看到它。

static String List getAll() { return User.list() }
static String User getByID(long id) { return User.get(id) }

这看起来更清晰,并且不会依赖Java代码中的Groovy类。