SSH中执行了删除为什么没有打印sql语句?而且没有删除,也没有报错!求解释(图)

上面是代码,执行没有问题,这个是在控制台打印的sql语句,没有delete这一项!我在Spring中配置了del*,方法名也是以这个开头的,为什么删除不了呢?而且还不报错... 上面是代码,执行没有问题,

这个是在控制台打印的sql语句,没有delete这一项!

我在Spring中配置了del*,方法名也是以这个开头的,为什么删除不了呢?而且还不报错,有点急,求解决,谢谢!
展开
 我来答
713lib
推荐于2016-07-02 · TA获得超过252个赞
知道小有建树答主
回答量:280
采纳率:100%
帮助的人:175万
展开全部

你配置的这个txAdivce是用于事务控制的,而不是用来打印sql的。

你需要配置的内容:

spring配置

<bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
     <prop key="hibernate.hbm2ddl.auto">update</prop>

             <prop key="connection.driver_class">com.mysql.jdbc.Driver</prop>
             <prop key="hibernate.show_sql">true</prop><!--打印sql语句-->
   </props>
  </property>
追问
这个我是知道的,打印sql语句可以再hibernate.cfg.xml中

true
我的这个主要的问题是他执行了 getHibernateTemplate().update(tfunc);没有报错,值我也能输出来,没有错误,但是为什么总是修改不了?执行了修改但是却没有更改数据库!
追答
1 你的po有唯一主键ID吗?hibernate在比较两个对象是否同一对象时,是按ID来比较的,这样的话,你可以用第一种方法更新,hibernate根据你那个ID就可以找到那个对象了。

2 如果1 方式不行,或者你使用的是联合主键,你可以使用下边这这种方式进行更新:
直接将对象查出来,然后直接更新这个对象。
3 如果1和2两种方式都解决不了,你使用JdbcTemplate,写sql执行更新。

你这个问题很可能是hibernate根本就没有找到指定的数据库记录,并没有对数据库的记录进行修改,你可以查看下这个更新函数的更新记录值的个数。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式