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 は、resources/META-INF に配置されて修正されました。

ここでEclipselinkのバグであることを読みました:https://bugs.eclipse.org/bugs/show_bug.cgi?id=338837

彼らは言った:

解決策: この問題には 2 つの方法があります。

1) エンティティをまったく指定せず、false も指定しません。この結果は、完全に空のメタモデルです。

2) プロパティを介してエンティティの一部のみを指定します。その結果、欠落している EntityType クラスを使用しようとすると、選択的な IllegalArgumentException エラーがスローされます (おそらく Criteria API クエリで)。

私はすでにこの2つの解決策を試しましたが、それでもこのエラーが発生しました.

誰か助けてください!

4

0 に答える 0