2

虽然我在 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. 没什么新鲜的

谢谢你的帮助。

文森特

4

2 回答 2

2

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

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

否则,如果您想使用 osgi,您可以通过这种方式检索 finder

@Reference
private volatile FooFinder fooFinder;

或者

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

    _fooFinder = fooFinder;
}

private FooFinder _fooFinder;

有关更多信息,请参阅 liferay-docs https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/finding-and-invoking-liferay-services

github上的示例 http://github.com/bruinen/liferay-services-example

于 2016-11-30T18:14:02.953 回答
0

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

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

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

于 2018-04-24T21:31:09.020 回答