Spring+Hibernate4整合中 getCurrentSession.delete()不能删除记录

J2EE 码拜 5年前 (2016-05-29) 615次浏览
最近遇到了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); 试试

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Spring+Hibernate4整合中 getCurrentSession.delete()不能删除记录
喜欢 (0)
[1034331897@qq.com]
分享 (0)