NamedQuery: IllegalArgumentException (запрос не найден) после экстернализации сущностей

Я успешно использовал javax.persistence. NamedQuery в сочетании с JPA2. Именованные запросы определены в верхней части файлов классов сущностей и используются из EJB без сохранения состояния (фасад сущности).

Теперь мне пришлось извлечь файлы классов сущностей в отдельный файл Jar (чтобы мы могли использовать их из Проект Google Web Toolkit). Очевидно, я все еще вставляю jar, но теперь фасадный компонент больше не находит запрос:

java.lang.IllegalArgumentException: NamedQuery of name: Store.findByExternalId not found.
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getDatabaseQueryInternal(EJBQueryImpl.java:576)
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1004)
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery(EntityManagerWrapper.java:533)
    at com.skalio.bonusapp.server.StoreFacade.getByExternalId(StoreFacade.java:43)
    ...

В чем проблема? Могу ли я определить NamedQueries во внешнем Jar?

Я только что нашел эту ссылку , предлагающую поместить NamedQueries в файлы XML, а не как аннотации в файлах сущностей. Это может быть идеей для решения моей проблемы, но не отвечает на мой вопрос ...;)

12
задан Martijn Pieters 17 November 2017 в 08:42
поделиться