我无法找到一个容易解决的问题的解决方案.假设有2个实体类:
class A {
Set<B> bs;
}
class B {
String text;
}
Run Code Online (Sandbox Code Playgroud)
如何创建一个条件查询,返回包含至少一个满足给定条件的B实体的所有A(如b.text ='condition')?
GWT与JPA
我的eclipse工作区中有两个项目,我们将它们命名为:
-JPAProject -GWTProject
JPAProject包含JPA配置内容(persistence.xml,实体类等).GWTProject是一个示例性GWT项目(取自官方GWT教程).
这两个项目都很好.也就是说,我可以在JPAProject中创建EMF(EntityManagerFactory)并从数据库中获取实体.GWTProject工作正常,我可以运行它,在浏览器中填写字段文本并获得响应.
我的目标是从GWTProject调用JPAProject来获取实体.但问题是,在调用DAO时,我得到以下异常:
[WARN] Server class 'com.emergit.service.dao.profile.ProfileDaoService' could not be found in the web app, but was found on the system classpath
[WARN] Adding classpath entry 'file:/home/maliniak/workspace/emergit/build/classes/' to the web app classpath for this session
[WARN] /gwttest/greet
javax.persistence.PersistenceException: No Persistence provider for EntityManager named emergitPU
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at com.emergit.service.dao.profile.JpaProfileDaoService.<init>(JpaProfileDaoService.java:19)
at pl.maliniak.server.GreetingServiceImpl.<init>(GreetingServiceImpl.java:21)
...
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
[ERROR] 500 - POST /gwttest/greet (127.0.0.1) 3812 bytes
Run Code Online (Sandbox Code Playgroud)
我想现在可以省略开头的警告.
你有什么想法?我想我错过了一些基本观点.所有提示都受到高度赞赏.
更新:我的持久性提供程序已明确定义,JPA项目本身运行良好.
我猜这也是类路径相关的问题.在运行GWT项目时,WEB-INF/lib …