cssxsh / mirai-hibernate-plugin

Mirai Console Hibernate/ORM 数据库前置插件
GNU Affero General Public License v3.0
31 stars 1 forks source link

Polymorphic serializer for class top.mrxiaom.overflow.internal.message.data.UnknownMessage #23

Closed zzj2039 closed 8 months ago

zzj2039 commented 8 months ago

2024-01-22 17:53:53 E/mirai-hibernate-plugin: org.hibernate.MappingException: entity class not found: xyz.cssxsh.mirai.hibernate.entry.FaceRecord org.hibernate.MappingException: entity class not found: xyz.cssxsh.mirai.hibernate.entry.FaceRecord at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:144) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.BinderHelper.getPropertyOverriddenByMapperOrMapsId(BinderHelper.java:1154) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.bindBasic(AnnotationBinder.java:1362) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.buildProperty(AnnotationBinder.java:1251) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1112) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.annotations.EntityBinder.processIdPropertiesIfNotAlready(EntityBinder.java:935) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.annotations.EntityBinder.bindEntityClass(EntityBinder.java:273) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:556) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:216) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:247) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:290) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:97) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:402) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:90) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:735) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:773) at mirai-hibernate-plugin-2.7.1.mirai2.jar//xyz.cssxsh.mirai.hibernate.MiraiHibernatePlugin.onEnable(MiraiHibernatePlugin.kt:57) at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:244) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:393) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:40) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:54) at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173) at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:193) at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:360) at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:512) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:182) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:181) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:59) Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [xyz.cssxsh.mirai.hibernate.entry.FaceRecord] at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:126) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.internal.ClassLoaderAccessImpl.classForName(ClassLoaderAccessImpl.java:67) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:139) ... 28 more Caused by: java.lang.ExceptionInInitializerError at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Unknown Source) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:120) ... 30 more Caused by: java.lang.IllegalArgumentException: Polymorphic serializer for class top.mrxiaom.overflow.internal.message.data.UnknownMessage has property 'type' that conflicts with JSON class discriminator. You can either change class discriminator in JsonConfiguration, rename property with @SerialName annotation or fall back to array polymorphism at kotlinx.serialization.json.internal.PolymorphismValidator.checkDiscriminatorCollisions(PolymorphismValidator.kt:67) at kotlinx.serialization.json.internal.PolymorphismValidator.polymorphic(PolymorphismValidator.kt:34) at kotlinx.serialization.modules.SerialModuleImpl.dumpTo(SerializersModule.kt:189) at kotlinx.serialization.json.JsonImpl.validateConfiguration(Json.kt:375) at kotlinx.serialization.json.JsonImpl.<init>(Json.kt:369) at kotlinx.serialization.json.JsonKt.Json(Json.kt:191) at kotlinx.serialization.json.JsonKt.Json$default(Json.kt:187) at mirai-hibernate-plugin-2.7.1.mirai2.jar//xyz.cssxsh.mirai.hibernate.entry.FaceRecord.<clinit>(FaceRecord.kt:60) ... 33 more

cssxsh commented 8 months ago

Caused by: java.lang.IllegalArgumentException: Polymorphic serializer for class top.mrxiaom.overflow.internal.message.data.UnknownMessage has property 'type'

cssxsh commented 8 months ago

@MrXiaoM

MrXiaoM commented 8 months ago

请尝试更新 Overflow 到最新版。

zzj2039 commented 8 months ago

请尝试更新 Overflow 到最新版。

今天刚下载的整合包

MrXiaoM commented 8 months ago

请尝试更新 Overflow 到最新版。

今天刚下载的整合包

我在几分钟前更新了。

zzj2039 commented 8 months ago

请尝试更新 Overflow 到最新版。

今天刚下载的整合包

我在几分钟前更新了。

好的我试试

zzj2039 commented 8 months ago

请尝试更新 Overflow 到最新版。

今天刚下载的整合包

我在几分钟前更新了。

2024-01-22 23:30:42 E/mirai-hibernate-plugin: org.hibernate.MappingException: entity class not found: xyz.cssxsh.mirai.hibernate.entry.FaceRecord org.hibernate.MappingException: entity class not found: xyz.cssxsh.mirai.hibernate.entry.FaceRecord at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:144) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.BinderHelper.getPropertyOverriddenByMapperOrMapsId(BinderHelper.java:1154) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.bindBasic(AnnotationBinder.java:1362) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.buildProperty(AnnotationBinder.java:1251) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1112) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.annotations.EntityBinder.processIdPropertiesIfNotAlready(EntityBinder.java:935) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.annotations.EntityBinder.bindEntityClass(EntityBinder.java:273) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:556) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:216) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:247) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:290) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:97) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:402) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:90) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:735) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:773) at mirai-hibernate-plugin-2.7.1.mirai2.jar//xyz.cssxsh.mirai.hibernate.MiraiHibernatePlugin.onEnable(MiraiHibernatePlugin.kt:57) at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:244) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:393) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:40) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:54) at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173) at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:193) at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:360) at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:512) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:182) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:181) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:59) Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [xyz.cssxsh.mirai.hibernate.entry.FaceRecord] at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:126) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.internal.ClassLoaderAccessImpl.classForName(ClassLoaderAccessImpl.java:67) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:139) ... 28 more Caused by: java.lang.ExceptionInInitializerError at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Unknown Source) at mirai-hibernate-plugin-2.7.1.mirai2.jar[shared]//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:120) ... 30 more Caused by: java.lang.IllegalArgumentException: Polymorphic serializer for class top.mrxiaom.overflow.message.data.ContactRecommend has property 'type' that conflicts with JSON class discriminator. You can either change class discriminator in JsonConfiguration, rename property with @SerialName annotation or fall back to array polymorphism at kotlinx.serialization.json.internal.PolymorphismValidator.checkDiscriminatorCollisions(PolymorphismValidator.kt:67) at kotlinx.serialization.json.internal.PolymorphismValidator.polymorphic(PolymorphismValidator.kt:34) at kotlinx.serialization.modules.SerialModuleImpl.dumpTo(SerializersModule.kt:189) at kotlinx.serialization.json.JsonImpl.validateConfiguration(Json.kt:375) at kotlinx.serialization.json.JsonImpl.<init>(Json.kt:369) at kotlinx.serialization.json.JsonKt.Json(Json.kt:191) at kotlinx.serialization.json.JsonKt.Json$default(Json.kt:187) at mirai-hibernate-plugin-2.7.1.mirai2.jar//xyz.cssxsh.mirai.hibernate.entry.FaceRecord.<clinit>(FaceRecord.kt:60) ... 33 more

zzj2039 commented 8 months ago

请尝试更新 Overflow 到最新版。

今天刚下载的整合包

我在几分钟前更新了。

依旧报错

MrXiaoM commented 8 months ago

再更新试试。

zzj2039 commented 8 months ago

启动问题已经解决了,但插件不知道消息来源,是否能修复 2024-01-23 11:38:59 W/mirai-hibernate-plugin: Exception in Recorder kotlinx.serialization.SerializationException: Class 'PlainText' is not registered for polymorphic serialization in the scope of 'SingleMessage'. To be registered automatically, class 'PlainText' has to be '@Serializable', and the base class 'SingleMessage' has to be sealed and '@Serializable'. Alternatively, register the serializer for 'PlainText' explicitly in a corresponding SerializersModule. at kotlinx.serialization.internal.AbstractPolymorphicSerializerKt.throwSubtypeNotRegistered(AbstractPolymorphicSerializer.kt:102) at kotlinx.serialization.internal.AbstractPolymorphicSerializerKt.throwSubtypeNotRegistered(AbstractPolymorphicSerializer.kt:114) at kotlinx.serialization.PolymorphicSerializerKt.findPolymorphicSerializer(PolymorphicSerializer.kt:109) at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:233) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt:80) at kotlinx.serialization.internal.CollectionLikeSerializer.serialize(CollectionSerializers.kt:69) at net.mamoe.mirai.message.data.MessageChain$Serializer.serialize(MessageChain.kt:278) at net.mamoe.mirai.message.data.MessageChain$Serializer.serialize(MessageChain.kt:273) at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:228) at kotlinx.serialization.json.internal.JsonStreamsKt.encodeByWriter(JsonStreams.kt:28) at kotlinx.serialization.json.Json.encodeToString(Json.kt:81) at net.mamoe.mirai.message.data.MessageChain$Companion.serializeToJsonString(MessageChain.kt:330) at net.mamoe.mirai.message.data.MessageChain$Companion.serializeToJsonString$default(MessageChain.kt:328) at mirai-hibernate-plugin-2.7.1.mirai2.jar//xyz.cssxsh.mirai.hibernate.entry.MessageRecord$Companion.fromSuccess(MessageRecord.kt:171) at mirai-hibernate-plugin-2.7.1.mirai2.jar//xyz.cssxsh.mirai.hibernate.MiraiHibernateRecorder$record$1.invokeSuspend(MiraiHibernateRecorder.kt:44) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) @cssxsh @MrXiaoM

MrXiaoM commented 8 months ago

https://github.com/mamoe/mirai/blob/78446ab3670abb4b95b516032416c7f236b08854/mirai-core/src/commonMain/kotlin/message/protocol/MessageProtocolFacade.kt#L167

初始化序列化器的地方已经找到了,我有空再看看