Класс Finder Util не создается с помощью Liferay 7 Service Builder

В то время как у меня не было проблем с Service Builder в Liferay 6.2, я столкнулся с проблемой блокировки в Liferay 7, когда собираю сервис для создания моего первого класса Finder Util. Когда я обнаружил это, я даже решил начать с нуля проект, проблема все еще здесь. Даже с официальным документом ничего не работает.

У кого-нибудь есть идеи, чтобы помочь мне?

Вот полное описание моего последнего теста в Eclipse Mars:

  1. Создать новое Liferay Workspace
  2. Создать новый Liferay Project Module Service Builder
  3. Создайте объект foo в service.xml
  4. Сервисы сборки (класс хорошо сформирован)
  5. Создайте вручную класс FooFinderImpl в пакете persistence.impl
  6. Строительные услуги
    Интерфейс FooFinder хорошо сгенерирован, но класс FooFinderUtil не сгенерирован.
  7. Добавьте несколько методов в класс FooFinderImpl
  8. Строительные услуги
  9. Ничего нового

Спасибо за помощь.

Винсент

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://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/finding-and-invoking-liferay-services

Execpel на GitHub http://github.com/bruinen/liferay-services-example

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

Примечание. В предыдущих версиях Liferay Portal ваши методы поиска были доступны через служебные классы -FinderUtil. Методы поиска теперь внедряются в локальные сервисы вашего приложения, устраняя необходимость вызывать утилиты поиска.

Теперь вы сможете напрямую вызывать ваш метод поиска в слое сервиса: fooFinder.findBy...

Другие вопросы по тегам