【发布时间】:2015-03-27 08:53:18
【问题描述】:
我正在开发一个 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 的方言选项。但我总是得到相同的“没有 JDBC 类型的方言映射: 1111'消息。 我的 application.properties 文件位于 test/resources 源文件夹中。它被 JUnit 测试运行程序识别(我之前因为输入错误而遇到异常)。
我设置的属性是否错误?我找不到关于这些属性名称的一些官方文档,但在这个 stackoverflow 答案中找到了提示:https://stackoverflow.com/a/25941616/1735497
期待您的回答,谢谢!
顺便说一句,应用程序已经在使用 spring boot。
【问题讨论】:
-
错误信息表示一列返回的数据类型无法映射。
No Dialect mapping for JDBC type: 1111表示 java.sql.Types.OTHER`。您从表格中选择了哪些列类型? -
哦,谢谢。我认为这意味着方言类型......是的,我喜欢使用 UUID 作为 ID,我们以前总是使用具有 UUID 列类型的 postgres。所以我们可以说@Type(type="pg-uuid");我不认为 mysql 有 UUID 列类型虽然
-
刚发现和postgres很像:对id属性应用@Type(type="uuid-char")注解。
-
如果在 SELECT 语句中放置一个 json 字段,我会遇到这个问题。我使用 PostgresSQL 和自定义休眠字段类型作为 json 类型。
标签: java mysql spring hibernate jpa