Я успешно использовал 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, а не как аннотации в файлах сущностей. Это может быть идеей для решения моей проблемы, но не отвечает на мой вопрос ...;)