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 ?
Author by
arinte
Updated on July 17, 2020Comments
-
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 over 15 yearsI 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 almost 12 yearsensure you close your EntityManagerFactory on undeploy