最近遇到了hibernate删除的一个问题
本人在搭建spring整合hibernate时遇到了不能删除记录的问题
具体的配置和代码如下:
本人在搭建spring整合hibernate时遇到了不能删除记录的问题
具体的配置和代码如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="packagesToScan" value="bean"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
然后删除方法是:
@Autowired private SessionFactory sessionFactory; protected Session getCurrentSession(){ return sessionFactory.getCurrentSession(); } @Override public void delete(T t) { logger.debug("delete instance."); try { getCurrentSession().delete(t); logger.debug("delete instance successful."); } catch (RuntimeException e) { logger.error("delete instance failed.", e); throw e; } }
每次执行delete方法时,进入了delete方法,但是控制台并没有打印sql语言,应该是没有执行的原因。
但是本人用execUpdate()方法本人写hql的时候,就可以正确的删除掉记录,或用openSession取代getCurrentSession本人管理session同样可以,只有getCurrentSession删不掉,不知道什么原因,还请高手指点
解决方案
50
估计session获取的问题
getCurrentSession().delete(t); 改成 sessionFactory.getCurrentSession().delete(t); 试试
getCurrentSession().delete(t); 改成 sessionFactory.getCurrentSession().delete(t); 试试