您的位置:首页 > 移动开发

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

2013-07-16 15:20 1046 查看
//实体类
@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.User
org.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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐