Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate softdelete-软删除时列索引超出范围异常_Java_Hibernate_Exception - Fatal编程技术网

Java Hibernate softdelete-软删除时列索引超出范围异常

Java Hibernate softdelete-软删除时列索引超出范围异常,java,hibernate,exception,Java,Hibernate,Exception,我在软删除时收到以下异常。我不确定错误在哪里?有人能帮我吗。提前谢谢 org.springframework.dao.DataIntegrityViolationException: could not delete: [com.ItemResponse#47379632]; SQL [UPDATE fs_item_response SET deleted = '1' WHERE itemresponseid = ?]; nested exception is org.hibernate

我在软删除时收到以下异常。我不确定错误在哪里?有人能帮我吗。提前谢谢

    org.springframework.dao.DataIntegrityViolationException: could not delete: [com.ItemResponse#47379632]; SQL [UPDATE fs_item_response SET deleted = '1' WHERE itemresponseid = ?]; nested exception is org.hibernate.exception.DataException: could not delete: [com.ItemResponse#47379632]        
    Caused by: org.postgresql.util.PSQLException: The column index is out of range: 2, number of columns: 1.
    at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:53)
    at org.postgresql.core.v3.SimpleParameterList.setLiteralParameter(SimpleParameterList.java:114)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.bindLiteral(AbstractJdbc2Statement.java:2176)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.setInt(AbstractJdbc2Statement.java:1214)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setInt(NewProxyPreparedStatement.java:677)
    at org.hibernate.type.IntegerType.set(IntegerType.java:64)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:154)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
    at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2521)
    ... 80 more
    <hibernate-mapping>
    <class name="com.DataResponse" dynamic-insert="true"
        dynamic-update="true" table="response" where="deleted != 1">
    <id name="id" column="dataresponseid" type="long"
            unsaved-value="-1">
            <generator class="seqhilo">
                <param name="max_lo">1</param>
                <param name="sequence">dataresponse_seq</param>
            </generator>
        </id>           
        <version name="version" column="version"
            type="java.lang.Integer" unsaved-value="null" />            
        <property name="deleted" type="long"  >
            <column name="deleted" default="0"/>
        </property>
        <property name="textResponse" type="java.lang.String"
            update="true" insert="true" column="textresponse" />
        <many-to-one name="dataDetail" class="com.DataDetail" cascade="none" update="true" insert="true" foreign-key="fk_datadetail_datadetailid" column="datadetailid" not-null="true" />
                <sql-delete>UPDATE response SET deleted = '1' WHERE dataresponseid = ?</sql-delete>
    </class>
    </hibernate-mapping>
org.springframework.dao.DataIntegrityViolationException:无法删除:[com.itemsresponse#47379632];SQL[UPDATE fs_item_response SET deleted='1',其中itemresponseid=?];嵌套异常为org.hibernate.exception.DataException:无法删除:[com.itemsresponse#47379632]
原因:org.postgresql.util.PSQLException:列索引超出范围:2,列数:1。
位于org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:53)
位于org.postgresql.core.v3.SimpleParameterList.setLiteralParameter(SimpleParameterList.java:114)
位于org.postgresql.jdbc2.AbstractJdbc2Statement.bindLiteral(AbstractJdbc2Statement.java:2176)
位于org.postgresql.jdbc2.AbstractJdbc2Statement.setInt(AbstractJdbc2Statement.java:1214)
在com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setInt(NewProxyPreparedStatement.java:677)
位于org.hibernate.type.IntegerType.set(IntegerType.java:64)
位于org.hibernate.type.NullableType.nullablesafeset(NullableType.java:154)
位于org.hibernate.type.NullableType.nullablesafeset(NullableType.java:136)
位于org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2521)
... 80多
1.
数据响应_seq
已删除更新响应集='1',其中dataresponseid=?

已删除的
的数据类型是
长的
。因此,从
SET deleted='1'

中删除
'
,在内部,当对版本化实体发出删除请求时,Hibernate似乎也将版本号作为第二个参数传递。因此,您需要修改SQLDelete语句以接受version参数


通过以下方式解决上述问题:

更新已删除的响应集=1,其中itemresponseid=?和-1!=


@Yohan Liyanage,谢谢你的提示。

即使从
集删除='1'
中删除
'
,我也会收到同样的错误。以下错误可疑:
原因:org.postgresql.util.PSQLException:列索引超出范围:2,列数:1
。尽管更新查询在错误日志中正确显示,但不确定其显示indext超出范围异常的原因<代码>org.springframework.dao.DataIntegrityViolationException:无法删除:[com.itemsresponse#47379632];SQL[UPDATE fs_item_response SET deleted=1,其中itemresponseid=?]谢谢!你帮了我很多!
UPDATE response SET deleted = '1' WHERE itemresponseid = ? AND version = ?