ssh 数据删不掉,可以增加,修改,查询。dao层,biz层接口 UsersDao ,UsersBiz 省略UsersDao 实现类:
public class UsersDaoHiberImpl extends HibernateDaoSupport implements UsersDao{
public Users get(int id)
{
return (Users)super.getHibernateTemplate().get(Users.class, id);
}
public void del(Users u)
{
super.getHibernateTemplate().delete(u);
}其它方法省略
}UsersBiz 实现类
public class UsersBizImpl implements UsersBiz {
UsersDao usersDao=null;
public void setUsersDao(UsersDao usersDao) {
this.usersDao = usersDao;
}
public void del(Users u) {
this.usersDao.del(u);
}
public Users get(int id) {
return this.usersDao.get(id);
}其它方法省略
}UsersAction 类
public class UsersAction extends DispatchAction {
UsersBiz usersBiz=null;
public void setUsersBiz(UsersBiz usersBiz) {
this.usersBiz = usersBiz;
}
public ActionForward get(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Users condition1=new Users();
List list1=this.usersBiz.search(condition1);
System.out.println("删除前有数据 "+list1.size()+"条");
UsersForm userForm=(UsersForm)form;
int id=userForm.getId(); //得到id
Users user =(Users)this.usersBiz.get(id); //加载id
this.usersBiz.del(user); //删除
Users condition2=new Users();
List list2=this.usersBiz.search(condition2);
System.out.println("删除后有数据"+list2.size()+"条");
return null;
}
}
spring配置文件部分:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="usersDao" class="com.ssh.UsersDaoHiberImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="usersBiz" class="com.ssh.UsersBizImpl">
<property name="usersDao" ref="usersDao"> </property>
</bean>
<bean name="/users" class="com.ssh.UsersAction">
<property name="usersBiz" ref="usersBiz"></property>
</bean> 数据库中有四条数据
运行后控制台打印:
删除前有数据4条
删除后有数据3条
把Tomcat停止后,在sql server2005中用查询语句查,结果还是4条数据,怎么删不掉啊?
public class UsersDaoHiberImpl extends HibernateDaoSupport implements UsersDao{
public Users get(int id)
{
return (Users)super.getHibernateTemplate().get(Users.class, id);
}
public void del(Users u)
{
super.getHibernateTemplate().delete(u);
}其它方法省略
}UsersBiz 实现类
public class UsersBizImpl implements UsersBiz {
UsersDao usersDao=null;
public void setUsersDao(UsersDao usersDao) {
this.usersDao = usersDao;
}
public void del(Users u) {
this.usersDao.del(u);
}
public Users get(int id) {
return this.usersDao.get(id);
}其它方法省略
}UsersAction 类
public class UsersAction extends DispatchAction {
UsersBiz usersBiz=null;
public void setUsersBiz(UsersBiz usersBiz) {
this.usersBiz = usersBiz;
}
public ActionForward get(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Users condition1=new Users();
List list1=this.usersBiz.search(condition1);
System.out.println("删除前有数据 "+list1.size()+"条");
UsersForm userForm=(UsersForm)form;
int id=userForm.getId(); //得到id
Users user =(Users)this.usersBiz.get(id); //加载id
this.usersBiz.del(user); //删除
Users condition2=new Users();
List list2=this.usersBiz.search(condition2);
System.out.println("删除后有数据"+list2.size()+"条");
return null;
}
}
spring配置文件部分:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="usersDao" class="com.ssh.UsersDaoHiberImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="usersBiz" class="com.ssh.UsersBizImpl">
<property name="usersDao" ref="usersDao"> </property>
</bean>
<bean name="/users" class="com.ssh.UsersAction">
<property name="usersBiz" ref="usersBiz"></property>
</bean> 数据库中有四条数据
运行后控制台打印:
删除前有数据4条
删除后有数据3条
把Tomcat停止后,在sql server2005中用查询语句查,结果还是4条数据,怎么删不掉啊?
<bean id="myHibTransationManamger"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="myHibTransationManamger">
<tx:attributes>
<tx:method name="get" propagation="REQUIRED"/>
<tx:method name="del" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="bizMethods" expression="execution(* com.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods"/>
</aop:config>
看看可以不?
<tx:attributes>
<tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
修改成这样看看
tomcat停止之前在sql server中查询数据,什么也查不出来
tomcat停止以后在sql server中可以查出来,但还是4条,没有删掉
{
super.getHibernateTemplate().delete(u);
}
得不到具体值的话,那么删除肯定失败.你可以再delete方法中试试如下方法,以确定你的u是否是正确的public void del(Users u)
{
Users u = getHibernateTemplate().load或者get一个,你必须确定能加载到一个
然后,实现删除,
super.getHibernateTemplate().delete(u); }
这么做的理由,load一个user后,主键肯定存在,所以删除按理来说是成功的,如果u有主键,但删除失败,说明,你的事务没提供!!