我正在开发一个 Spring JPA 应用程序,使用 MySQL 作为数据库。我确保加载了所有 spring-jpa 库、hibernate 和 mysql-connector-java。
我正在运行一个 mysql 5 实例。这是我的 application.properties 文件的摘录:
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.datasource.url=jdbc:mysql://localhost/mydatabase
spring.datasource.username=myuser
spring.datasource.password=SUPERSECRET
spring.datasource.driverClassName=com.mysql.jdbc.Driver
执行集成测试时,spring 正常启动但无法创建 hibernate SessionFactory,但以下情况除外:
org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
我认为我的方言应该是 Mysql5Dialect,我还尝试了一个明确说明 InnoDB 的方言,以及两个不指示版本 5 的方言选项。但我总是以相同的“No Dialect mapping for JDBC type: 1111”消息结束.我的 application.properties 文件位于 test/resources 源文件夹中。它被 JUnit 测试运行器识别(我之前因为其中的拼写错误而遇到异常)。
我设置的属性有误吗?我找不到关于这些属性名称的一些官方文档,但在这个 stackoverflow 答案中找到了提示: https ://stackoverflow.com/a/25941616/1735497
期待您的解答,谢谢!
顺便说一句,该应用程序已经在使用 spring boot。
原文由 SakeSushiBig 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是基于 SubOptimal 评论的答案:
错误消息实际上是说一个列类型无法通过休眠映射到数据库类型。在我的例子中,它是
java.util.UUID
类型,我在我的一些实体中用作主键。只需应用注释@Type(type="uuid-char")
(对于 postgres@Type(type="pg-uuid")
)