2010-02-12 2 views
2

Я пытаюсь запустить простой пример с помощью JPA в EJB через GlassFish. У меня есть следующий persistence.xmlПроблема сохранения Java

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 
    <persistence-unit name="default" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/wms</jta-data-source> 
    <class>com.xxx.xxx.datamodel.MyTest</class> 
    <exclude-unlisted-classes /> 
    <properties> 
     <property name="eclipselink.target-server" value="SunAS9"/> 
     <property name="eclipselink.logging.level" value="FINEST"/> 
     <property name="eclipselink.target-database" value="Oracle"/> 

     <property name="eclipselink.jdbc.driver" value="oracle.jdbc.OracleDriver" /> 
     <property name="eclipselink.jdbc.url" value="[dbconnectionstring]" /> 
     <property name="eclipselink.jdbc.user" value="user" /> 
     <property name="eclipselink.jdbc.password" value="password" /> 
    </properties> 
    </persistence-unit> 
</persistence> 

Простой объект:

package com.xxx.xxx.datamodel; 

import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name = "move_task") 
public class MyTest { 

    private int key; 
    private String description; 

    @Id 
    public int getKey(){ 
     return key; 
    } 

    public void setKey(int key){ 
     this.key = key; 
    } 

    public String getDescription(){ 
     return this.description; 
    } 

    public void setDescription(String description){ 
     this.description = description; 
    } 

    @Override 
    public String toString(){ 
     return "Key: " + key + " Description: " + description; 
    } 

} 

И, наконец, следующий код, чтобы попытаться использовать выше:

private void jpaCall() { 
     try{ 
      emf = Persistence.createEntityManagerFactory("default"); 
      em = emf.createEntityManager(); 
      log.info("JPA init complete"); 

      final List<MyTest> list = em.createQuery("select p from MyTest p").getResultList(); 

      for (MyTest current : list) { 
       final String description = current.getDescription(); 
       log.info("JPA: Desc: " + description); 
      } 

     } 
     catch(Exception e){ 
      log.error("Error on JPA", e); 
     } 

    } 

Когда запускается как часть моего EJB инициализация Я получаю следующую ошибку:

java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Error compiling the query [select p from MyTest p]. Unknown entity type [MyTest]. 
... 
Caused by: Exception [EclipseLink-8034] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.JPQLException 
Exception Description: Error compiling the query [select p from MyTest p]. Unknown entity type [MyTest]. 

Я не уверен, что я делаю неправильно и буду признателен за любую помощь.

Приветствия,

Джеймс

+0

Как вы все это упаковываете? Где вы помещаете свой persistence.xml? –

+0

Развертывается на стеклянную рыбу из затмения. Файл persistence.xml находится в каталоге META-INF EJB. – James

+0

Я знаю, что это найти persistence.xml, потому что если я изменить его, чтобы иметь недопустимый поставщика я получаю необходимое Вам исключение: org.eclipse.persistence.jpa.PersistenceProviderjhjh javax.persistence.PersistenceException: Нет Постоянство поставщика для EntityManager по умолчанию – James

ответ

0

Так как комментарии выше предполагают, что это, кажется, проблема с затмением плагин для GlassFish. У меня нет проблем при развертывании уха вручную.

Спасибо всем за помощь.

James

+0

Сообщите об ошибке https://glassfishplugins.dev.java.net/issues/ :) –

+0

Выполнено: https://glassfishplugins.dev.java.net/issues/show_bug.cgi?id=307 – James

 Смежные вопросы

  • Нет связанных вопросов^_^