User user = (User)this.hibernateTemplate.load(User.class, id);
System.out.println(user.getLoginName()+"--------------delete----------hibernatetemplate:"+this.hibernateTemplate);
this.hibernateTemplate.delete(user);
System.out.println("-----------------------------delete");
在执行了this.hibernateTemplate.delete(user);没发出HQL语句,也没有任何反应,数据还是没删除成功
System.out.println(user.getLoginName()+"--------------delete----------hibernatetemplate:"+this.hibernateTemplate);
this.hibernateTemplate.delete(user);
System.out.println("-----------------------------delete");
在执行了this.hibernateTemplate.delete(user);没发出HQL语句,也没有任何反应,数据还是没删除成功
误人子弟了!不是提交事务才行,在spring封装的hibernate中,每执行一次save(),delete()....这类的操作,都要执行这句 session.flush();
你说的提交事务,其实也是执行了session.flush()的
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="*" propagation="NOT_SUPPORTED"
read-only="true" />
</tx:attributes>
</tx:advice> <aop:config>
<aop:pointcut
expression="execution(* com.ambow.service.*.*(..))" id="AllMethod" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="AllMethod" />
</aop:config>
这种事debug 是最有效果的。
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
这些我也加了
上面的user查出来是有对象的,就是执行delete时没有情况发生,也不报错,
求大虾们帮忙!!! 急
public boolean deleteInfo(int id){
boolean flag = false;
try {
T t= (T)this.getHibernateTemplate().get(cls,id);
if(t!=null){
this.getHibernateTemplate().delete(t);
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
先调用get()方法再删除的话会把session缓存中的记录也删除了的,如果只想删除数据库中的记录直接delete()可以吗?
我是小菜鸟,正在学习JAVA相关内容,还望指点.