尝试使用Hibernate和Hibernate C3P0查询数据库。它在我的本地桌面上工作,但当我部署代码时,它停止了,并显示以下错误堆栈:
java.lang.NoSuchFieldError: SPATIAL_MSG_LOGGER
2023-07-24T10:14:59.232-07:00 at org.hibernate.spatial.dialect.mysql.MySQLDialectContributor.contributeJdbcTypes(MySQLDialectContributor.java:28)
2023-07-24T10:14:59.232-07:00 at org.hibernate.spatial.contributor.SpatialTypeContributor.contribute(SpatialTypeContributor.java:22)
2023-07-24T10:14:59.232-07:00 at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:390)
2023-07-24T10:14:59.232-07:00 at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:143)
2023-07-24T10:14:59.232-07:00 at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:97)
2023-07-24T10:14:59.232-07:00 at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:402)
2023-07-24T10:14:59.232-07:00 at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:90)
2023-07-24T10:14:59.232-07:00 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:735)
字符串
不知道SPATIAL_MSG_LOGGER是从哪里来的,因为它在我的本地桌面上不是一个问题,它从来没有在我的代码中调用。在hibernate中也没有使用任何与空间相关的东西,所以我不知道为什么它会试图调用它。
有没有什么出现的空间_味精_日志在任何搜索引擎,所以我甚至不知道从哪里开始寻找。
1条答案
按热度按时间gupuwyp21#
如果您查看错误来自的源代码:
字符串
错误说:
java.lang.NoSuchFieldError: SPATIAL_MSG_LOGGER
,这意味着HSMessageLogger
不具有期望的字段SPATIAL_MSG_LOGGER
。但是,看看这里的来源:https://github.com/hibernate/hibernate-orm/blob/main/hibernate-spatial/src/main/java/org/hibernate/spatial/HSMessageLogger.java可以看到该字段已初始化,这意味着它应该具有值。此外,它似乎在2022年3月的某个时候(见:https://github.com/hibernate/hibernate-orm/commit/741 b6 b71 f1552 aa 224 fb 61 d38 b85 b32 e0 b8 a19 b4 #diff-ff 75339310 aacf 045 c3 aabe 5190 c15 a4 d338939 a167 cf 7 f39 f096 dcc 7328 b1 c3)原始的
Logger
字段名被替换为SPATIAL_MSG_LOGGER
,这对你来说是失败的。为了总结以上它们如何导致您看到的问题,似乎有:
1.部署环境中的hibernate/spring/spatial版本不匹配,或者
1.你的配置需要以某种方式排序,以便在执行失败的代码(你共享的stacktrace来自哪里)之前初始化spatial logger。
您可以尝试做的是禁用空间整合,看看这是否会改变什么。我认为配置设置是:
hibernate.integration.spatial.enabled
(默认为true,您可以尝试将其设置为false)。另一件事是尝试查看您的配置是否有一些奇怪的版本组合,并尝试修复它(更新所有内容,显式设置特定版本,以便部署环境可以正确读取它们)。
EDIT:(第三个选项)您也可以联系AWS支持,询问他们有关错误的信息,特别是他们如何解决hibernate依赖项
我希望这对你有帮助,或者至少给予你一些建议。祝你好运!