• hibernate 插入,更新数据库错误


    Hibernate: insert into TMe_MerchandiseCInfo (ID, MerchandiseCName, SortID, State, MerchandiseCID) values (?, ?, ?, ?, ?)
    [11-11 10:53:41] [http-bio-8080-exec-1] [ERROR][org.hibernate.engine.jdbc.spi.SqlExceptionHelper-146]-当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'TMe_MerchandiseCInfo' 中的标识列插入显式值。
    [11-11 10:53:41] [http-bio-8080-exec-1] [ERROR][org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl-175]-HHH000352: Unable to release batch statement...
    [11-11 10:53:41] [http-bio-8080-exec-1] [ERROR][org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl-176]-HHH000246: SQLException escaped proxy
    java.sql.SQLException: org.apache.commons.dbcp.DelegatingPreparedStatement with address: "SQLServerPreparedStatement:32" is closed.

    hibernate框架默认给数据库中的所有字段插值,包括自增长,所以会报上面的错误,如果不想让hibernate给你的某个字段插值在加上这句(@Column(name = "字段名"insertable = false,updatable = false,deletetable=false))三个的意思是,插入(更新)(删除)数据时不给某字段赋值

    @Column(name = "ID")

    错误:org.hibernate.TransientObjectException: The given object has a null identifier

    我在更新商品分类信息表的时候,之前写的代码有的是自增,有的是uuid,之前想的是这些自增的和uuid类型的东西不用我操心,只是更新了一些其他的属性,然后我就没有把自增的字段和uuid的东西添加并显示出来,如下的代码

    columns: [
    {text:'递增的流水号',dataIndex:'id',xtype:'hidden'},
    {text:'商品编码',dataIndex:'merchandiseCid',xtype:'hidden'},
    {text: '商品名称', dataIndex: 'merchandiseCName'},
    {text: '排序编码', dataIndex: 'sortId'},
    {text: '状态', dataIndex: 'state'}
    ],

    items:[ {fieldLabel:'递增的流水号',name:'tme.id',value:tagMsg.get('id'),xtype:'hidden'},
    {fieldLabel:'商品编码',name:'tme.merchandiseCid',value:tagMsg.get('merchandiseCid'),xtype:'hidden'},

    {fieldLabel: '商品名称',name: 'tme.merchandiseCName',value:tagMsg.get('merchandiseCName')},
    {fieldLabel: '排序编码',name: 'tme.sortId',value:tagMsg.get('sortId')},
    {xtype:'combobox',fieldLabel: '状态',displayField:'name',store:states,valueField:'abbr',name: 'tme.state',value:tagMsg.get('state')}],

    递增的流水号和商品编码是不需要去对用户展示出来的,然后之前就没有写这些东西,但在更新数据的时候他会报上面的错误。

    断点发现在更新的时候去传实体,实体里面的自增字段“递增的流水号”和uuid“商品编码”是为空的,所以不能更新。

    问题:在更新的时候传了一个空的自增属性的值。

    解决方法:那些不需要去展示的东西给他赋个xtype:'hidden'属性,更新的时候就会传到实体里面去了。

  • 相关阅读:
    Swift中的设计模式
    ios应用view之间数据传递的方式
    关于iOS多线程,你看我就够了
    iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
    iOS蓝牙4.0开发例子
    工作记录8:iOS 传值问题总结(7种传值完美介绍)
    iOS 各种传值方式
    iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)
    Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
    源码推荐(7.17):不规则按钮类似于遥控器按钮,一个可以最大程度简化PageView与TabView切换的第三方框架
  • 原文地址:https://www.cnblogs.com/chfg/p/4088924.html
Copyright © 2020-2023  润新知