diff --git a/src/main/kotlin/com/gzzn/omms/msgexchange/infra/persistence/jdbc/JdbcCminmsgInboxRepository.kt b/src/main/kotlin/com/gzzn/omms/msgexchange/infra/persistence/jdbc/JdbcCminmsgInboxRepository.kt index fbbfc1c..a5a027f 100644 --- a/src/main/kotlin/com/gzzn/omms/msgexchange/infra/persistence/jdbc/JdbcCminmsgInboxRepository.kt +++ b/src/main/kotlin/com/gzzn/omms/msgexchange/infra/persistence/jdbc/JdbcCminmsgInboxRepository.kt @@ -26,13 +26,23 @@ class JdbcCminmsgInboxRepository( ) : CminmsgInboxRepository { override fun insertRaw(rawXml: String): Long = - ds.updateReturningLong( - """ - INSERT INTO cminmsgs (CMINMSGS_CLOB_MSG, CMINMSGS_DATE_RECEIVED, CMINMSGS_DATE_PROCESSED) - VALUES (?, CURRENT_TIMESTAMP, NULL) - """.trimIndent(), - ) { ps -> - ps.setString(1, rawXml) + try { + ds.updateReturningLong( + """ + INSERT INTO cminmsgs (CMINMSGS_CLOB_MSG, CMINMSGS_DATE_RECEIVED, CMINMSGS_DATE_PROCESSED) + VALUES (?, CURRENT_TIMESTAMP, NULL) + """.trimIndent(), + ) { ps -> + ps.setString(1, rawXml) + } + } catch (e: IllegalStateException) { + // 只调整适配代码、不碰共享 Schema:把"取不到 generated key"变成可诊断错误, + // 指出这是共享信箱 ID 生成方式的前提(C-14、Q7)。 + throw IllegalStateException( + "shared mailbox insert returned no generated CMINMSGS_ID; " + + "the CMINMSGS_ID column must be DB-generated (C-14, Q7)", + e, + ) } override fun rawOf(msgId: Long): String? =