Сообщение об ошибке неизвестного класса сущности даже хотя объект отмечен аннотацией @Entity

Я создаю веб-приложение REST, используя Netbean6.9.1 и JPA EclipseLink.

] Проблема, с которой я столкнулся, заключается в том, что хотя мой класс сущностей MasatoTable отмечен аннотацией Entity, я получаю сообщение об ошибке:

    (java.lang.IllegalArgumentException: Unknown entity bean class:
     class entity.MasatoTable, please verify that this class
 has been marked with the @Entity annotation.)

Дело в том, что , когда я перезапускаю сервер GlassFish3 из NetbeanIDE, он некоторое время работает и каким-то образом какой-то момент, появляется ошибка. Раньше я использовал Toplink Essential, и у меня не было проблем, но я перешел на EclipseLink и заново определил persistence.xml (показано ниже), и эта проблема началась. Но я не вижу ни одной ошибки кода, о которой я мог бы думать.

MasatoTable.java

@Entity
@Table(name = "MasatoTable")
public class MasatoTable implements Serializable {
...continue code...

persistence.xml



  
    org.eclipse.persistence.jpa.PersistenceProvider
    jdbc/koga_kojo
    entity.MasatoTable
    
      
      
      
      
      
      
    
  

Похоже на ту же проблему, но решение этой проблемы - откат на Toplink из Eclipselink. Кто-нибудь решил проблему без отката к toplink?

Неизвестный класс entity-компонента после горячего развертывания: netbeans 6.9 + glassfish 2.1 + eclipselink jpa 2.0

ОБНОВЛЕНИЕ

Что касается моего исследования в отношении этого случая, похоже, что ошибка устранена и исправлена?

https://bugs.eclipse.org/bugs/show_bug.cgi?id=288141

Я недостаточно осведомлен, чтобы понять все, но нашел несколько фактов:

Netbean6.9 . 1 предоставляет EclipseLink 2.0.1, тогда как самая новая версия - 2.2.0

Я загрузил самую новую версию и поместил их в каталог lib, а затем повторно развернул, но безуспешно, проблема все еще сохраняется. Не уверен, что сделал что-то неправильно.

ОБНОВЛЕНИЕ после комментария Джеймса

Ниже показан класс, который я использую для создания singleton EntityManagerFactory, и то, как он используется.

package common;

import java.util.Date;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class EmProvider {

    private static final String DB_PU = "kojoPU"; //工場DB

    public static final boolean DEBUG = false;

    private static final EmProvider singleton = new EmProvider();

    private EntityManagerFactory emf;

    private EmProvider() {}

    public static EmProvider getInstance() {
        return singleton;
    }


    public EntityManagerFactory getEntityManagerFactory() {
        if(emf == null) {
            emf = Persistence.createEntityManagerFactory(DB_PU);
        }
        if(DEBUG) {
            System.out.println("factory created on: " + new Date());
        }
        return emf;
    }

    public void closeEmf() {
        if(emf.isOpen() || emf != null) {
            emf.close();
        }
        emf = null;
        if(DEBUG) {
            System.out.println("EMF closed at: " + new Date());
        }
    }

}//end class

Как он используется:

EntityManager em = null;
   Object out = null;
   try {
       em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();
       Query query = em.createNativeQuery(sql);

       ....some code here
   }
   finally {
       if(em != null) {
           em.close();
       }
   }

Глядя на мой код, я думаю ... Я не закрываю EntityManagerFactory (я, наконец, закрываю EntityManager)

Я также обнаружил, что ошибка "неизвестный класс объектного компонента" в теме наверняка обнаруживается следующим образом действие.

  1. Развертывание веб-приложения через Netbean (откроется браузер)

  2. Измените код в IDE Netbean и сохраните его. Затем Netbean будет автоматически повторно развернуть, как только вы нажмете кнопку сохранения (это называется «горячее развертывание» ???).

  3. Вернитесь в браузер и выполните некоторые действия, такие как добавление данных, которые включают EntityManager.

Похоже, ошибка возникает из-за того, что я не закрываю фабрику диспетчера сущностей при горячем развертывании? Я должен провести расследование.

8
задан Community 23 May 2017 в 11:47
поделиться