JPA - Unknown entity bean class

27,605

Solution 1

define this entity in class tag inside the persistence.xml

Solution 2

According to the error message and what I figure from your code, the error seems to be in the persistence.xml file, can you be a bit more verbose ?

Share:
27,605
arinte
Author by

arinte

Updated on July 17, 2020

Comments

  • arinte
    arinte almost 4 years

    Hopefully, I can explain this issue properly. I have 3 classes that deals with my entities.

    @MappedSuperclass
    public abstract class Swab implements ISwab {
    ...
        private Collection<SwabAccounts> accounts;
    ...
    }
    
    @Entity
    @Table(name="switches")
    @DiscriminatorColumn(name="type")
    @DiscriminatorValue(value="DMS500")
    public class DmsSwab extends Swab implements ISwab, Serializable {
    ...
        private ObjectPool pool;
    ...
        @Transient 
        public ObjectPool getPool(){
            return pool;
        }
    ...
    }
    
    @Entity(name="swab_accounts")
    public class SwabAccounts implements Serializable {
        private static final long serialVersionUID = 1L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int swab_account_id;
        private int swab_id;
    ...
    }
    

    And in a EJB a query is being doing this way

        DmsSwab dms = em.find(DmsSwab.class, 2);
        List<Swab> s = new ArrayList<Swab>(1);
        s.add(dms);
    

    My persistence.xml looks like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <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="dflow-pu" transaction-type="RESOURCE_LOCAL">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <class>com.dcom.sap.dms.DmsSwab</class>
        <class>com.dcom.sap.jpa.SwabAccounts</class>
        <properties>
          <property name="toplink.jdbc.user" value="dflow"/>
          <property name="toplink.jdbc.password" value="dflow"/>
          <property name="toplink.jdbc.url" value="jdbc:mysql://itcd-400447:3306/dflow"/>
          <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        </properties>
      </persistence-unit>
    </persistence>
    

    I get this error:

    java.lang.IllegalArgumentException: Unknown entity bean class: class com.dcom.sap.dms.DmsSwab, please verify that this class has been marked with the @Entity annotation.
    com.dcom.sap.SwabException: java.lang.IllegalArgumentException: Unknown entity bean class: class com.dcom.sap.dms.DmsSwab, please verify that this class has been marked with the @Entity annotation.
    Caused by: java.lang.IllegalArgumentException: Unknown entity bean class: class com.dcom.sap.dms.DmsSwab, please verify that this class has been marked with the @Entity annotation.
            at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.findInternal(EntityManagerImpl.java:306)
            at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.find(EntityManagerImpl.java:148)
    

    I am running netbeans 6.1 with the version of glassfish that comes with it. MySql 5.0.

  • arinte
    arinte over 15 years
    I found the answer. Netbeans/glassfish needs some work it seems. I had to undeploy, stop the server, and restart and then it worked fine.
  • James
    James almost 12 years
    ensure you close your EntityManagerFactory on undeploy