Класс Finder Util не создается с помощью Liferay 7 Service Builder
В то время как у меня не было проблем с Service Builder в Liferay 6.2, я столкнулся с проблемой блокировки в Liferay 7, когда собираю сервис для создания моего первого класса Finder Util. Когда я обнаружил это, я даже решил начать с нуля проект, проблема все еще здесь. Даже с официальным документом ничего не работает.
У кого-нибудь есть идеи, чтобы помочь мне?
Вот полное описание моего последнего теста в Eclipse Mars:
- Создать новое Liferay Workspace
- Создать новый Liferay Project Module Service Builder
- Создайте объект foo в service.xml
- Сервисы сборки (класс хорошо сформирован)
- Создайте вручную класс FooFinderImpl в пакете persistence.impl
- Строительные услуги
Интерфейс FooFinder хорошо сгенерирован, но класс FooFinderUtil не сгенерирован. - Добавьте несколько методов в класс FooFinderImpl
- Строительные услуги
- Ничего нового
Спасибо за помощь.
Винсент
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...