如何在Java / Spring服务层中使用grails域类(在groovy中)。
当使用grails MVC时,一切都很好,因为我可以使用控制器来访问域对象并在其上调用CRUD和其他动态方法。但是,我想知道的是有一个干净的方法来从Java - 比如服务层。例如,我可能想要开发一个报告框架,我需要使用域对象来访问数据库。
我希望问题很明确。这应该是一个标准问题,每个人都必须在一个合理规模的项目中面对。我只是想知道它是如何解决的。可能我在这里遗漏了一些东西。
感谢。
答案 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类。