(注解方式持久化类报错解决方案-仅供参考)org.hibernate.MappingException: Unknown entity: com.rx.entity.po.User

来源:互联网 发布:免费手机网页制作软件 编辑:程序博客网 时间:2024/06/08 06:05
//实体类@Entity@Table(name = "T_SECU_USER_INFO")public class User implements Serializable{/*** */private static final long serialVersionUID = 1L;@Id@Column(name = "USER_NAME")private String userName;@Column(name = "PASS_WORD")private String passWord;public String getUserName(){return userName;}public void setUserName(String userName){this.userName = userName;}public String getPassWord(){return passWord;}public void setPassWord(String passWord){this.passWord = passWord;}}

下面是Spring中Hibernate的配置

<bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource"><ref local="dataSource" /></property><property name="packagesToScan"><list><value>com.rx.entity.po.*</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">${c3p0.dialect}</prop><prop key="hibernate.jdbc.fetch_size">50</prop><prop key="hibernate.jdbc.batch_size">30</prop><prop key="hibernate.connection.release_mode">auto</prop><prop key="hibernate.autoReconnect">true</prop><prop key="hibernate.cglib.use_reflection_optimizer">true</prop><prop key="hibernate.show_sql">true</prop></props></property></bean>

报错

org.hibernate.MappingException: Unknown entity: com.rx.entity.po.Userorg.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:68)org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)org.hibernate.impl.SessionImpl.get(SessionImpl.java:815)org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)org.springframework.orm.hibernate3.HibernateTemplate$1.doInHibernate(HibernateTemplate.java:531)org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:525)org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:519)com.rx.dao.daoImpl.HibernateQueryDaoImpl.get(HibernateQueryDaoImpl.java:27)com.rx.action.LoginAction.execute(LoginAction.java:54)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)java.lang.reflect.Method.invoke(Method.java:597)com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441).........................

解决方案:

1.我的实体类User是放在package com.rx.entity.po包下的,在Spring中引用方式是
<property name="packagesToScan">
<list>
<value>com.rx.entity.po.*</value>
</list>
</property>
引用的时候不能引用到com.rx.entity.po.*,而是到com.rx.entity.*下

<property name="packagesToScan">
<list>
<value>com.rx.entity.*</value>
</list>
</property>
applicationContext.xml中配置实体扫描时路径出错, 
比如:实体类存放在com.demo.entity包下, 
则路径就要配为 <property name="packagesToScan" value="com.demo.*"/> 
而不是 <property name="packagesToScan" value="com.demo.entity.*"/> 
也就是说配置映射目录要比实际少一层。


2.@Entity引入的类是import javax.persistence.Entity;而不是import org.hibernate.annotations.Entity; 

原创粉丝点击