SSH框架整合之创建Hibernate对象时无法加载实体类
程序员文章站
2022-04-14 09:18:29
...
软件版本信息:
Java版本:1.7
spring版本:4.2.4.
hibernate版本:5.0.7.
struts2版本:2.3.24
tomcat版本:7.0
apache-maven版本:3.6.0
博主初次学习使用SSH框架,对于遇到的各种错误都不是很懂,所以记录下来以防下次遇到知道如何解决。搭建环境以及启动都遇到或多或少的问题,后面再进行补充。
SSH框架整合之创建Hibernate对象时无法加载实体类的问题。
检查位置一:本文从持久层抽取IBaseDao<T>说起,持久层抽取通用代码——基本的增删改查功能,在抽取抽象层代码的过程中最主要的是如何动态的获取具体的实体类泛型T,实现步骤,在实现类的构造方法中添加以下代码:
public BaseDaoImpl() {
ParameterizedType superclass = (ParameterizedType) this.getClass().getGenericSuperclass();
//获得父类上声明的泛型数组
Type[] actualTypeArguments = superclass.getActualTypeArguments();
entityClass = (Class<T>) actualTypeArguments[0];
}
检查位置二:注入具体的Dao层的使用类,本文以UserDao为例,博主采用的注入方式为注释的方法。如果使用的是配置文件的方式,需要自行配置相应的<bean>
@Repository
public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao {
}
检查位置三:实体类的配置文件(未使用注释的方式),特别注意其中复制实体类的Qualified name,如下所示
<class name="com.tz.bos.entity.User" table="t_user">
检查位置四:spring的主配置文件applicationContext.xml中,其中关于向Hibernate中注入元数据配置文件位置的代码,以及组件扫描的代码。
<!-- 配置LocalSessionFactoryBean,spring提供的用于整合hibernate的工厂bean -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 注入hibernate相关的属性配置 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<!-- 注入hibernate的映射文件 -->
<property name="mappingLocations">
<list>
<value>classpath:com/tz/bos/entity/*.xml</value>
</list>
</property>
</bean>
<!-- 组件扫描 -->
<context:component-scan base-package="com.tz.bos"/>
检查位置五:重新检查一下maven的配置文件pom.xml中的信息是否正确,博主就是坑在了这里,debug到了夜里的一点,最后泪流满面。
特别注意:每次修改完,都重新maven clean再者maven install 重新下载一次,最后重新创建一下本地的maven仓库的索引Rebuild index。
上一篇: Hibernate4中Session缓存
下一篇: Hibernate4学习(一)入门