记录错误: 无法更新视图“xxx“ 详细:不来自单表或单视图的视图不能自动更新

在这里插入图片描述

:142 : 错误: 无法更新视图"xxx"
  详细:不来自单表或单视图的视图不能自动更新.
  建议:启用对视图的更新操作, 需要提供INSTEAD OF UPDATE触发器或者一个无条件的 ON UPDATE DO INSTEAD 规则.
15:13:02.297 --- [INFO ]c.j.b.e.h.GlobalExceptionHandler        :77 : RuntimeException[code: 5, message: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement]
org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement
 at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:353)
 at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255)
 at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:538)
 at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:744)
 at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:712)
 at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:631)
 at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:385)
 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
 at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
 at com.jesun.b2b.service.mall.goods.MallBizGoodsService$$EnhancerBySpringCGLIB$$730fb2a1.findDetailById(<generated>)

在执行我的自定义接口findDetailById时报错;
在这里插入图片描述
goods对象类:(Table是个单视图)
在这里插入图片描述
一开始以为是视图实体对象调用set方法导致的,借鉴了网上的意见,在findDetailById接口上设置为失误等级为只读

@Transactional(propagation = Propagation.NOT_SUPPORTED)

然后该问题解决。

后面又出现了这个问题,我发现该注释失效。
重新解读,发现 不来自单表或单视图的视图不能自动更新。我其中有个业务是视图join表获得结果。
最后就分开写了,就解决了。今天就不详细写了,有时间再整理下。

补充:
可以同步创建新对象,通过属性copy,再修改新对象中对应的属性值,解决session中的对象更新问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值