IDEA,spring,hibernate配置问题求大神解答

低调的酱油叔 2017-07-27 04:15:21
在IDEA下使用hibernate,删除实体类和对应配置文件后编译,依然会去找那个删除的实体类。然后报错。

使用的编辑器是IDEA,spring集成hibernate

一开始的时候创建了一个实体Usersession,并创建了对应的hibernate映射文件,后来把这个实体删除了,但编译的时候报错,报错如下
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilter' defined in class path resource [spring/spring-shiro-web.xml]: Cannot resolve reference to bean 'securityManager' while setting bean property 'securityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityManager' defined in class path resource [spring/spring-shiro-web.xml]: Cannot resolve reference to bean 'userRealm' while setting bean property 'realm'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRealm' defined in class path resource [spring/spring-shiro-web.xml]: Cannot resolve reference to bean 'userBiz' while setting bean property 'userBiz'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userBiz' defined in class path resource [spring/spring-beans.xml]: Cannot resolve reference to bean 'userDao' while setting bean property 'userDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in class path resource [spring/spring-beans.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [spring/spring-db.xml]: Invocation of init method failed; nested exception is org.hibernate.boot.MappingException: Error calling Value#setTypeUsingReflection: containingClassName=[com.yd.taskcat.entity.UserSession], propertyName=[sessionId], role=[com.yd.taskcat.entity.UserSession.sessionId] : origin(null)

我看了一下应该是在spring在生产对应的bean的时候报错,报错最终指向到找不到com.yd.taskcat.entity.UserSession,这个类我确实已经删除了,配置文件也删除了
对应的配置文件:
spring的
    <context:property-placeholder location="classpath:db.properties"/>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" lazy-init="false">
<!-- 注入datasource,给sessionfactoryBean内setdatasource提供数据源 -->
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
<!-- //加载实体类的映射文件位置及名称 -->
<property name="mappingLocations" value="classpath:entity/*.hbm.xml"/>

</bean>


hibernate.cfg.xml中的内容

<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>

做过尝试将mappingLocations不通过通配符的方式定义,直接指定到具体的.hbm.xml文件,可以避免这个问题,但是后来发现在其他的.hbm.xml增加列没有效果。使用hibernate保存实体的时候新增加的列无法添加。
使用IDEA全局搜索关键字UserSession,没有任何与之相关的内容。

猜测应该是由于什么缓存导致的,在网上找了几个IDEA清缓存的方法都没有效果。

请路过的兄弟也给点意见,提供一些解决思路
...全文
292 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
低调的酱油叔 2017-07-27
  • 打赏
  • 举报
回复
问题原因找到了 重新导入文件后用对比工具对比了新的文件夹和之前的文件夹才发现的、 IDEA 在编译web项目后会在target目录下生成classes目录,这个目录是编译后的文件,之后会将这个目录中的所有内容复制到 target/WEB-INF下,所以在tomcat中实际执行的是WEB-INF下classes中的文件,这个操作应该是复制覆盖操作,不会删除多的文件,所以target/classes目录下虽然看不到了删除的文件还实际存在于target/WEB-INF/classes下。target目录下的文件在做搜索的时候是无法搜索到的。所以误认为已经完成删除了。 只要将target/WEB-INF下的文件删除,问题就解决了。 暂时还不知道如何能让着两个文件夹实际同步,避免这样的问题。
低调的酱油叔 2017-07-27
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
报错最终指向到找不到com.yd.taskcat.entity.UserSession,这个类我确实已经删除了,配置文件也删除了,.... 之前改完部署到tomcat的文件估计还是原来的。。。
我还不太清除IDEA是如何把项目放到Tomcat中的 ,我在Tomcat的文件夹中没有找到相关的项目文件,在IDEA的target目录下的文件确实已经是修改过的了,无论是从IDEA中看还是直接去文件夹看都是没有问题的。 排查的时候在IDEA的.idea目录中有个文件叫workspace.xml,这个里面存在关于Usersession的内容,但是把这个文件删除后重新生成也没有能解决问题。不太了解这个文件的具体作用。 还有一个值得说明的是初始的.hbm.xml文件是通过IDEA中的persisience自动生成的,从文件上来看会根据数据库信息自动生成实体类和.hbm.xml文件,并将依赖加入到hibernate.cfg.xml文件中。我知道的这几个变化我都删除了。但是还是出现了上面的问题。 很奇怪
李德胜1995 2017-07-27
  • 打赏
  • 举报
回复
报错最终指向到找不到com.yd.taskcat.entity.UserSession,这个类我确实已经删除了,配置文件也删除了,.... 之前改完部署到tomcat的文件估计还是原来的。。。
低调的酱油叔 2017-07-27
  • 打赏
  • 举报
回复
IDEA配置文件全部删除,target目录删除,重新导入。之后没有问题了。但是还是不知道原因是什么

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧