[jboss-user] [EJB 3.0] - Jboss can't find annotated entity classes

tigrik do-not-reply at jboss.com
Wed Jul 25 11:38:05 EDT 2007


Hi guys, I'm new to EJB3 so maybe it's a real dumb question but I'm sitting 3 days with this error right now and slowly becoming crazy. 

The problem is, JBoss 4.2 can't find my entity classes. As it starts the persistence I get an error (see bellow). 

Here is my persistence.xml: 

 

    <persistence-unit name="database" transaction-type="RESOURCE_LOCAL">
    <jta-data-source>java:/MySqlDS</jta-data-source>
        
         
         
 


    </persistence-unit>


 
mysql-ds.xml is OK and JBoss reads it. It's called MySqlDS in JNDI. 

So the problem is, when I do: 


entityManagerFactory = Persistence.createEntityManagerFactory("database", new HashMap());

I get this error: 

17:36:23,060 INFO  [Version] Hibernate EntityManager 3.2.1.GA
17:36:23,083 INFO  [Version] Hibernate Annotations 3.2.1.GA
17:36:23,108 INFO  [Environment] Hibernate 3.2.4.sp1
17:36:23,117 INFO  [Environment] hibernate.properties not found
17:36:23,119 INFO  [Environment] Bytecode provider name : javassist
17:36:23,124 INFO  [Environment] using JDK 1.4 java.sql.Timestamp handling
17:36:23,436 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
javax.persistence.PersistenceException: [PersistenceUnit: database] class or package not found
	at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1089)
	at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:886)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:772)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:183)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:240)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
	at com.kukinbuk.utils.EntityManagerFilter.doFilter(EntityManagerFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: WEB-INF.classes.com.kukinbuk.hibernate.RecipePicture
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:112)
	at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1005)
	at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1077)
	... 26 more

It happends with every single Class I annotate as @entity. The classes are deffinitely there in my WAR-Archive und same names... Here an example of such a class (generated by Eclipse 3.3 using latest Hibernate Tools)

package com.kukinbuk.hibernate;
// default package
// Generated 24.07.2007 19:50:34 by Hibernate Tools 3.1.0.beta5

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * RecipePicture generated by hbm2java
 */
@Entity
@Table(name = "recipe_picture", catalog = "kukinbuk", uniqueConstraints = {})
public class RecipePicture implements java.io.Serializable {

	// Fields    

	private long id;
	private Recipe recipe;
	private String picture;
	private String title;

	// Constructors

	/** default constructor */
	public RecipePicture() {
	}

	/** minimal constructor */
	public RecipePicture(long id) {
		this.id = id;
	}

	/** full constructor */
	public RecipePicture(long id, Recipe recipe, String picture, String title) {
		this.id = id;
		this.recipe = recipe;
		this.picture = picture;
		this.title = title;
	}

	// Property accessors
	@Id
	@Column(name = "ID", unique = true, nullable = false, insertable = true, updatable = true)
	public long getId() {
		return this.id;
	}

	public void setId(long id) {
		this.id = id;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "RECIPE_ID", unique = false, nullable = true, insertable = true, updatable = true)
	public Recipe getRecipe() {
		return this.recipe;
	}

	public void setRecipe(Recipe recipe) {
		this.recipe = recipe;
	}

	@Column(name = "PICTURE", unique = false, nullable = true, insertable = true, updatable = true, length = 50)
	public String getPicture() {
		return this.picture;
	}

	public void setPicture(String picture) {
		this.picture = picture;
	}

	@Column(name = "TITLE", unique = false, nullable = true, insertable = true, updatable = true, length = 200)
	public String getTitle() {
		return this.title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

}


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4067459#4067459

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4067459



More information about the jboss-user mailing list