Entité inconnue de la classe de message d'erreur, même si l'entité est marquée avec @Entity

Je suis bâtiment de REPOS web app à l'aide de Netbean6.9.1 et JPA EclipseLink.

La question que je me pose, c'est que malgré ma classe d'entité MasatoTable est marqué par l'Entité d'annotation, j'obtiens l'erreur:

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

La chose est lorsque je redémarre l'GlassFish3 serveur de NetbeanIDE, il fonctionne pendant un certain temps et d'une certaine manière à un certain point, l'erreur de commencer à montrer. J'ai l'habitude d'utiliser Toplink Essentiel et n'avait pas de problème, mais j'ai changé d'EclipseLink et re-définie persistence.xml (ci-dessous) et ce problème a commencé. Mais je ne vois pas de code d'erreur que je pense..

MasatoTable.java

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

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
  <persistence-unit name="kojoPU">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <non-jta-data-source>jdbc/koga_kojo</non-jta-data-source>
    <class>entity.MasatoTable</class>
    <properties>
      <property name="eclipselink.logging.logger" value="JavaLogger"/>
      <property name="eclipselink.logging.level.sql" value="FINEST"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://KOGADBSERVER;databaseName=MasatoDB"/>
      <property name="javax.persistence.jdbc.password" value="foobar"/>
      <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
      <property name="javax.persistence.jdbc.user" value="koga"/>
    </properties>
  </persistence-unit>
</persistence>

Ressemble même problème mais que le billet de la solution de la restauration à Toplink de Eclipselink. Quelqu'un a résoudre le problème sans rouler retour à toplink?

Unknown entity bean classe après le déploiement à chaud: netbeans 6.9 + glassfish 2.1 + eclipselink jpa 2.0

Mise à JOUR

En ce qui concerne ma recherche se fait en termes de ce cas, le bug a été résolu et le fixe?

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

Je ne suis pas suffisamment compétent pour comprendre la chose ensemble, mais il ya quelques faits que j'ai trouvé:

Netbean6.9.1 offre EclipseLink 2.0.1 alors que la nouvelle version est 2.2.0

J'ai téléchargé la nouvelle version et placer dans le dossier lib puis re-déployé, mais pas de chance, le problème persiste. Vous ne savez pas si j'ai fait les choses dans le mauvais sens.

Mise à JOUR d'après James commentaire

Ci-dessous est la classe que j'utilise pour créer singleton EntityManagerFactory et comment il est utilisé.

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

Comment il est utilisé:

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();
       }
   }

En regardant mon code, je pense... je ne suis pas de clôture EntityManagerFactory (je suis à la clôture de l'EntityManager enfin si)

J'ai aussi j'ai trouvé le "unknown entity bean class" erreur dans le sujet présente pour assurer à la suite de l'action.

  1. Déployer des web application par le biais de Netbean (Ce qui permettra d'ouvrir le navigateur)

  2. Changer une partie du code Netbean de l'IDE et de l'enregistrer. Ensuite, Netbean auto-re-déployer dès que vous appuyez sur le bouton enregistrer (est ce qu'on appelle "déploiement à chaud" ???)

  3. Revenir au navigateur et prendre des mesures telles que l'ajout de certaines données qui implique l'EntityManager.

Ressemble l'erreur se produit parce que je ne suis pas de clôture, l'entité gestionnaire de l'usine à chaud-déployer? Je dois étudier.

Mais je ne devrais pas être la conclusion de EntityManagerFactory exemple, puisqu'il est un singleton. Je devrais la fermer et de créer une nouvelle instance au cours de hot-déployer..? de se confondre

OriginalL'auteur masato-san | 2011-02-23