1

我正在尝试使用 IntelliJ IDEA、Maven、Google Guice、GWT、EclipseLink 和 JPA 2.0 进行简单的持久性测试。

我的persistence.xml:

<persistence-unit name="guiceTest" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>utfpr.edu.br.server.model.Contato</class>
    <properties>
        <property name="javax.persistence.jdbc.url"
                  value="jdbc:postgresql://127.0.0.1:5432/gwt"/>
        <property name="javax.persistence.jdbc.password" value="postgres"/>
        <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
        <property name="javax.persistence.jdbc.user" value="postgres"/>
        <property name="eclipselink.ddl-generation" value="create-tables"/>
        <property name="eclipselink.logging.level" value="INFO"/>
    </properties>
</persistence-unit>

例外:

[EL Warning]: 2012-06-21 10:18:32.846--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units.  Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element

java.lang.IllegalArgumentException: Object: Contato{dataNascimento=Thu Jun 21 10:18:31 BRT 2012, id=null, nome='abcd', sobrenome='adsada', numero='12313123', email='lololol@gmail.com'} is not a known entity type.

测试类:

Injector i = PersistenceTestModule.getInjector();
private ContatoDao dao = i.getInstance(ContatoDao.class);
@Test
public void testSave() throws Exception {
  Contato cont = new Contato("abcd","adsada","12313123","lollollo@gmail.com",new Date());
  dao.save(cont);
  assertNotNull(cont.getId());
}

我的 persistence.xml 已更正放置在资源/META-INF 中。

我在这里读到这是一个 eclipselink 错误:https ://bugs.eclipse.org/bugs/show_bug.cgi?id=338837

他们说:

解决方案:解决这个问题有两种方法。

1) 我们根本没有指定实体,也没有指定 false - 结果是一个完全空的元模型

2) 我们通过属性仅指定部分实体 - 结果是当我们尝试使用缺少的 EntityType 类时抛出的选择性 IllegalArgumentException 错误 - 可能在 Criteria API 查询中”。

我已经尝试了这两种解决方案,但仍然出现此错误。

请有人帮助我!

4

0 回答 0