一. 使用duceap的jdbc删除操作抛异常
异常信息
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction
说明操作的对象时应用了乐观锁机制,或定义pojo时定义了version字段.
错误原因:
当在进行操作时,当前version版本与数据库中version版本不一致;
1:两个以上的session同时对此记录进行了相似操作;
2:数据提交问题:
例如通过编辑页面来修改一条记录时:提交上来的form值对象中version为空或者大于数据库中对应该记录的version字段值,当update时,version不一致就会出错;
解决:
1.用form提交数据时,把version也一并提交上来;
2.从数据库中把version查出来,赋给实体对象;再更新;
解决:把service层的jdbc操作改成dao层的jpa来删除就解决了
二. 删除一次只能删一个
异常信息
ORA-00933: SQL command not properly ended
当抛出此错误提示信息,代表着SQL语句本身就是有问题的!(ORA-00933:SQL命令没有正确的结束)比如:
1:可能SQL语句中关键字前后缺少空格
2:Oracle 给表起别名时,直接在表名的后面空格别名就可以,不需要AS
3:SQL 语句中缺少关键字或者多了某个关键字,比如:AND
4:SQL 语句中缺少关键字或者多了某个标点符号,比如:,
5:数据库不同的版本或不同的数据库支持的SQL的语法规则是不一样的,一句SQL语句在一个数据中是正确的在另一个数据库中未必也正确
解决:和问题1一样改成jpa中dao层删除
三. Oracle中对于varchar2类型
Oracle中对于varchar2类型,如果是UTF-8编码,一个中文占用3个字符长度,如果是GBK编码,一个中文占用2个字符长度