Общая проблема JPA и GWT состоит в том, что сам GWT не поддерживает причудливые классы JPA, поэтому вы просто делаете простые постоянные объекты POJO DTO, которые реализуют java.io.Serializable и имеют простые аннотации ресурсов JPA. Вам необходимо создать классы сущностей в области видимости клиента GWT, либо добавить их в пакет yourproject.client, либо добавить их с помощью
исходный путь = "клиент"
source path = "folderOfYourEntities"
в файле YouProject.gwt.xml проекта GWT. Это будет включать объекты сущностей в клиенте GWT, чтобы они могли использовать их также на стороне клиента RPC. DAO должен быть на стороне сервера и может содержать все, что поддерживает ваш контейнер.
Проблема, с которой вы столкнулись сейчас, заключается в том, что при компиляции компилятор GWT говорит, что он не знает, что это за импорт аннотаций JPA в классах сущностей DTO. Вот почему вам нужен класс javax.persistence и исходные коды. Работает ссылка на jpa-annotation-source.jar от Rustmyself. Это просто скомпилированные файлы классов javax.persistence и файлы исходного кода, а также файл Persistence.gwt.xml. Это простой GWT-модуль для пакета javax.persistence. Если вы знаете, как создать свой собственный модуль GWT, у вас должны быть проблемы с выполнением всей этой работы. Кстати, официальный источник Java EE можно найти в разделе сборки сайта Glassfish Dev wiki.glassfish.java.net
Существует множество других решений, которые автоматически оборачивают ваши причудливые объекты PU в простые объекты с использованием прокси-сервера или лениво загружают их во время выполнения. Они работают, но не оптимальные решения. Лучше всего с самого начала сделать вещи простыми и надежными, используя объекты POJO JPA DTO в контексте клиента GWT и полноценный DAO на сервере.
Пример GWTPersistence
Я добавил настоящий рабочий пример того, как заставить GWT и JPA работать без проблем. Это проект NetBean с исходными кодами и файлом развертывания. См. GWTPersistence на NingZhang.info