为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server 64 V8
【操作系统】:Kylin Linux Advanced Server V10 (Sword)
【CPU】:
【问题描述】*:Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz
在一个事务内,JPA先保存对象:
2025-03-10T08:25:22.275679945Z Hibernate:
2025-03-10T08:25:22.275687102Z insert
2025-03-10T08:25:22.275693925Z into
2025-03-10T08:25:22.275700695Z department
2025-03-10T08:25:22.275707642Z (creator, gmt_create, gmt_modified, mender, abbreviation, chain_id, code, company_id, conference_chain_id, coverage_id, dept_desc, dept_name, dept_rank, ds_priority, ldap_guid, mcu_template_id, parent_id, source, storage_size, vc_functional, vc_special)
2025-03-10T08:25:22.275715502Z values
2025-03-10T08:25:22.275722335Z (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2025-03-10T08:25:22.299635444Z 2025-03-10 16:25:22:298 - [DEBUG] - http-nio-10021-exec-5 - org.hibernate.id.IdentifierGeneratorHelper - Natively generated identity: 961
注意到日志中获取的自增主键是961,实际上应该在200左右,从这里开始应该就不对了,然后修改该对象
2025-03-10T08:25:22.337834837Z Hibernate:
2025-03-10T08:25:22.337841510Z update
2025-03-10T08:25:22.337851630Z department
2025-03-10T08:25:22.337874437Z set
2025-03-10T08:25:22.337881697Z gmt_modified=?,
2025-03-10T08:25:22.337888464Z mender=?,
2025-03-10T08:25:22.337895187Z abbreviation=?,
2025-03-10T08:25:22.337908540Z chain_id=?,
2025-03-10T08:25:22.337938347Z code=?,
2025-03-10T08:25:22.337945497Z company_id=?,
2025-03-10T08:25:22.337952137Z conference_chain_id=?,
2025-03-10T08:25:22.337958904Z coverage_id=?,
2025-03-10T08:25:22.337965967Z dept_desc=?,
2025-03-10T08:25:22.337973287Z dept_name=?,
2025-03-10T08:25:22.337980031Z dept_rank=?,
2025-03-10T08:25:22.337986831Z ds_priority=?,
2025-03-10T08:25:22.337993544Z ldap_guid=?,
2025-03-10T08:25:22.338000311Z mcu_template_id=?,
2025-03-10T08:25:22.338011304Z parent_id=?,
2025-03-10T08:25:22.338018208Z source=?,
2025-03-10T08:25:22.338030441Z storage_size=?,
2025-03-10T08:25:22.338038261Z vc_functional=?,
2025-03-10T08:25:22.338045198Z vc_special=?
2025-03-10T08:25:22.338052281Z where
2025-03-10T08:25:22.338058998Z id=?
2025-03-10T08:25:22.342597557Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [TIMESTAMP] - [Mon Mar 10 16:25:22 CST 2025]
2025-03-10T08:25:22.342625380Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [2] as [VARCHAR] - [nix]
2025-03-10T08:25:22.342635010Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [3] as [VARCHAR] - []
2025-03-10T08:25:22.342642754Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [4] as [BIGINT] - [null]
2025-03-10T08:25:22.342650290Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR] - []
2025-03-10T08:25:22.342657694Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [6] as [BIGINT] - [189]
2025-03-10T08:25:22.342665474Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [7] as [BIGINT] - [null]
2025-03-10T08:25:22.342682121Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [8] as [BIGINT] - [null]
2025-03-10T08:25:22.342689647Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [9] as [VARCHAR] - []
2025-03-10T08:25:22.342697017Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [10] as [VARCHAR] - [二级子公司]
2025-03-10T08:25:22.342705554Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [11] as [VARCHAR] - []
2025-03-10T08:25:22.342712901Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [12] as [INTEGER] - [null]
2025-03-10T08:25:22.342720294Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [13] as [VARCHAR] - [null]
2025-03-10T08:25:22.342729061Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [14] as [BIGINT] - [null]
2025-03-10T08:25:22.342736517Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [15] as [BIGINT] - [189]
2025-03-10T08:25:22.342743798Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [16] as [BIGINT] - [null]
2025-03-10T08:25:22.342758831Z 2025-03-10 16:25:22:341 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [17] as [BIGINT] - [-1]
2025-03-10T08:25:22.342767514Z 2025-03-10 16:25:22:342 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [18] as [BOOLEAN] - [false]
2025-03-10T08:25:22.342775021Z 2025-03-10 16:25:22:342 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [19] as [BOOLEAN] - [false]
2025-03-10T08:25:22.342782414Z 2025-03-10 16:25:22:342 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [20] as [BIGINT] - [961]
最后SELECT语句查询961时,报错:
2025-03-10T08:25:22.350636417Z 2025-03-10 16:25:22:349 - [TRACE] - http-nio-10021-exec-5 - org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [BIGINT] - [961]
2025-03-10T08:25:22.357548860Z 2025-03-10 16:25:22:351 - [WARN ] - http-nio-10021-exec-5 - org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Warning Code: 100, SQLState: 02000
2025-03-10T08:25:22.357589453Z 2025-03-10 16:25:22:351 - [WARN ] - http-nio-10021-exec-5 - org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Empty result
事务提交时,JPA报错:
2025-03-10T08:25:22.367809390Z Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [com.potevio.dss2.ms.oauth.entity.Department#961]
连接参数如下:
zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&compatible_mode=mysql
JPA配置如下:
jpa:
database-platform: "org.hibernate.dialect.DmDialect"
show-sql: true
open-in-view: false
hibernate:
use-new-id-generator-mappings: false
properties:
javax:
persistence:
sharedCache:
mode: ENABLE_SELECTIVE
hibernate:
id:
new_generator_mappings: false
use_jdbc_metadata_defaults: false
enable_lazy_load_no_trans: true
format_sql: true
connection:
provider_disables_autocommit: false
order_inserts: true
order_updates: true
query:
fail_on_pagination_over_collection_fetch: true
in_clause_parameter_padding: true
show_sql: true
dialect: org.hibernate.dialect.DmDialect
去掉事务内更新操作后,发现JPA获取的主键ID与提交后实际生效的不一致,JPA获取的是961,实际提交后是199。
2025-03-10T09:19:09.875520093Z 2025-03-10 17:19:09:874 - [DEBUG] - http-nio-10021-exec-9 - org.hibernate.id.IdentifierGeneratorHelper - Natively generated identity: 961