【发布时间】:2015-11-18 10:24:08
【问题描述】:
我正在尝试在 IntelliJ Idea 15 中实现一个 GWT 项目。我对 GWT 及其 superdev 模式没有任何问题(至少很明显)——我可以运行一个应用程序并使用它。我可以进行 RPC 调用。
但是,现在我正在尝试添加 JPA/Hibernate 支持以使用数据库。在这里我遇到了麻烦。在项目中,我有一个 GWT 方面(2.6.1)、一个 JPA 方面(具有休眠实现)和一个 web 方面(用于 web dd)。使用Open Module Settings -> Libraries -> New Project Library我已经添加了gwt-servlet.jar,并使用了maven(它不是maven项目,只是使用了Idea的特性)库:c3p0:c3p0:0.9.1.2,org.hibernate:hibernate-entitymanager:5.0.3.Final,org.postgresql:postgresql:9.3-1101-jdbc41;这就是配置。
使用此持久性单元属性(摘录):
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="20" />
<property name="hibernate.c3p0.timeout" value="300" />
<property name="hibernate.c3p0.max_statements" value="50" />
<property name="hibernate.c3p0.idle_test_period" value="3000" />
在 GWT RPC servlet 中,我尝试创建 EntityManager 实例:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("ThreatPersistenceUnit");
EntityManager em = emf.createEntityManager();
Query query = em.createQuery("SELECT a FROM Asset a");
...
但是当我尝试使用默认 GWT 运行配置 (Jetty) 在 IDEA 中运行它时,出现以下异常:
javax.persistence.PersistenceException: Unable to build entity manager factory
引起
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.postgresql.Driver
此外,在异常之前我收到以下警告: 警告:HHH000022:遇到 c3p0 属性,但在类路径上找不到 c3p0 提供程序类;这些属性将被忽略。
看来服务器看不到c3p0和postgre jdbc驱动。
我尝试用谷歌搜索,发现最接近的问题/解决方案是 SO answer。我已将库同时放入项目和工件中。但是,我不确定 Jetty lib 的回复是什么意思。如果我只使用 GWT 的默认服务器,我在哪里可以找到 Jetty 安装?
另外,对我来说似乎很奇怪的是,在我遇到 GWT RPC 的类似问题(我不记得它是否完全是 ClassNotFoundException)之前,我可以通过向库中添加 gwt-servlet.jar 来解决这个问题- 为什么添加这些其他库没有帮助?至少它似乎对休眠没有任何问题,因为它提供了警告等。
【问题讨论】:
标签: java hibernate gwt intellij-idea