使用Liferay 7 Service Builder不生成Finder Util类

时间:2016-11-25 15:57:33

标签: java-ee liferay liferay-7 liferay-service-builder

虽然Liferay 6.2中的Service Builder没有问题,但是当我构建服务以生成我的第一个Finder Util类时,我在Liferay 7中遇到了阻塞问题。 当我发现这一点时,我甚至决定从头开始一个项目,问题仍然存在。 即使有官方文件,也没有任何作用。

有人有任何想法可以帮助我吗?

以下是我在Eclipse Mars中的最后一次测试的完整描述:

  1. 创建新的Liferay工作区
  2. 创建新的Liferay项目模块服务构建器
  3. 在service.xml中创建一个foo对象
  4. 构建服务 (课堂生成很好)
  5. 在persistence.impl包中手动创建FooFinderImpl类
  6. 建立服务
    FooFinder接口生成良好但未生成FooFinderUtil类。
  7. 在FooFinderImpl类中添加一些方法
  8. 构建服务
  9. 没什么新的
  10. 谢谢你的帮助。

    文森特

2 个答案:

答案 0 :(得分:2)

构建服务时,build.gradle中有一些属性,因此如果要生成Util类,必须将osgiModule设置为false。

buildService {
    apiDir = "../foo-api/src/main/java"
    osgiModule = false
    propsUtil = "com.liferay.docs.foo.service.util.PropsUtil"
}

否则,如果你想使用osgi,你可以这样回收取景器

@Reference
private volatile FooFinder fooFinder;

@Reference(unbind = "-")
protected void setFooFinder(
        FooFinder fooFinder) {

    _fooFinder = fooFinder;
}

private FooFinder _fooFinder;

有关详细信息,请参阅liferay-docs https://plnkr.co/edit/TpBZtgNNww4CnTwQFtef?p=preview

例如github https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/finding-and-invoking-liferay-services

答案 1 :(得分:0)

来自https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/custom-sql

  

注意:在以前版本的Liferay Portal中,您可以通过-FinderUtil实用程序类访问查找器方法。 Finder方法现在被注入到应用程序的本地服务中,无需调用finder实用程序。

您现在应该可以直接在服务层中调用您的finder方法:fooFinder.findBy...