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

//实体类
@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; 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值