Home » Eclipse Projects » Virgo » Virgo 3.5+ hibernate 4 + spring 3.1.1 unknown entity problem
Virgo 3.5+ hibernate 4 + spring 3.1.1 unknown entity problem [message #813633] |
Mon, 05 March 2012 09:29  |
Eclipse User |
|
|
|
Hi all,
I am using VTS 3.5.0.M2 + Spring 3.1.1.release + hibernate 4.1.0.Final, when i start the web bundle that contains the jpa annotated persistent entities, it throws this error (import the right Entity annotation : javax.persistence.Entity):
org.hibernate.MappingException: Unknown entity: web.virgo.Person
org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1172)
org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1316)
org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117)
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:204)
org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:189)
org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:670)
org.hibernate.internal.SessionImpl.save(SessionImpl.java:662)
org.hibernate.internal.SessionImpl.save(SessionImpl.java:658)
web.virgo.PersonDao.save(PersonDao.java:23)
web.virgo.PersonDao$$FastClassByCGLIB$$d93c55c.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
web.virgo.PersonDao$$EnhancerByCGLIB$$e011172d.save(<generated>)
web.virgo.HelloServlet.showWidgetTestView(HelloServlet.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
Here is my MANIFET.MF :
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Web
Bundle-SymbolicName: com.osgi.web
Bundle-Version: 1.0.0.qualifier
Web-ContextPath: virgo
Import-Package: com.mysql.jdbc;version="[5.1.6,5.1.6]",
javax.annotation;version="[1.0.0,1.0.0]",
javax.servlet;version="[3.0.0,3.0.0]",
javax.servlet.http;version="[3.0.0,3.0.0]",
javax.sql,
org.aopalliance.aop;version="[1.0.0,1.0.0]",
org.aopalliance.intercept;version="[1.0.0,1.0.0]"
Import-Bundle: org.springframework.orm;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.core;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.transaction;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.aop;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.asm;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.aspects;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.beans;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.context;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.context.support;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.expression;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.jdbc;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.web;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.web.portlet;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.web.servlet;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
com.springsource.org.apache.commons.dbcp;version="[1.2.2.osgi,1.2.2.osgi]",
com.springsource.org.apache.commons.pool;version="[1.5.3,1.5.3]",
com.springsource.net.sf.cglib;version="[2.2.0,2.2.0]",
com.springsource.org.hibernate.annotations.common;version="[4.1.0.Final,4.1.0.Final]",
com.springsource.org.hibernate.core;version="[4.1.0.Final,4.1.0.Final]";import-scope:=application,
com.springsource.org.hibernate.validator;version="[4.2.0.Final,4.2.0.Final]",
org.springframework.jms;version="[3.1.1.RELEASE,3.1.1.RELEASE]",
org.springframework.osgi.core;version="[1.2.1,1.2.1]",
org.springframework.osgi.extender;version="[1.2.1,1.2.1]",
org.springframework.osgi.io;version="[1.2.1,1.2.1]",
org.springframework.oxm;version="[3.1.1.RELEASE,3.1.1.RELEASE]"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.hibernate.bundle.hibernate-jpa-bundle,com.springsource.javax.persistence
Export-Package: web.virgo;uses:="org.springframework.ui,org.springframework.orm.hibernate4"
the "org.hibernate.bundle.hibernate-jpa-bundle" is a osgi-fied hibernate-jpa-api-2.0.
and the spring config file :
<!-- configure annotated Bean -->
<context:annotation-config />
<!-- Auto Component Scan -->
<context:component-scan base-package="web.virgo" />
<tx:annotation-driven />
<!-- <context:property-placeholder location="classpath:config.properties"
/> -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/virgo" />
<property name="username" value="jayh" />
<property name="password" value="undead2009" />
</bean>
<bean id="formSessionFactoryBean"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialet">org.hibernate.dialect.MySQLDialect</prop>
<prop key="shared-cache-mode">NONE</prop>
</props>
</property>
<property name="packagesToScan">
<array>
<value>web.virgo</value>
</array>
</property>
<property name="annotatedPackages">
<array>
<value>web.virgo</value>
</array>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<constructor-arg ref="formSessionFactoryBean" />
</bean>
<bean id="transactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<!-- Forwards requests to the "/" resource to the "welcome" view -->
<mvc:view-controller path="/" view-name="layout" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
and the entity class :
package web.virgo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="person")
public class Person {
@Id
@GeneratedValue
private long id;
private String name;
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
}
I guess the problem is the osgi class loader thing when finding the annotated entities while building the session factory. But because the session factory is created by spring, i cannot do anything about the classloader.
Is there anything i missed or i am doing something wrong?
Thank you.
Jay
[Updated on: Mon, 05 March 2012 09:31] by Moderator
|
|
| |
Re: Virgo 3.5+ hibernate 4 + spring 3.1.1 unknown entity problem [message #1314029 is a reply to message #813719] |
Fri, 25 April 2014 02:01  |
Eclipse User |
|
|
|
Hi Jay,
Did you overcome the situation. what did you do. cause im also trying to implement a modular java application using spring and hibernate and couldn't resolve the dependencies after adding the hibernate features to the bundle. if you can share you working sample that would be great. And i would like to now how did you add snap bundle dependencies in Virgo.
Thanks a lot.
Rajiv.
|
|
|
Goto Forum:
Current Time: Mon Jul 07 22:35:07 EDT 2025
Powered by FUDForum. Page generated in 0.04049 seconds
|