首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spring上使用正确的方言PostgreSQL

在Spring上使用正确的方言PostgreSQL
EN

Stack Overflow用户
提问于 2017-09-08 13:43:44
回答 4查看 10.5K关注 0票数 3

我有一个名为User的实体,它通向一个名为user的表,在PostgreSQL中,该表应该被引号包围,这样它才能工作。我知道我可以指定一个自定义表名,但是Hibernate不应该自动指定引号吗?

我被告知,也许Hibernate没有使用PostgreSQL方言。当我的数据库配置如下时,这种情况是否可能:

代码语言:javascript
运行
复制
spring.datasource.url = jdbc:postgresql://localhost/database_name
spring.datasource.username = username
spring.datasource.password = password

如果是这样的话,我如何使Hibernate使用正确的方言?

我试过:

代码语言:javascript
运行
复制
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

代码语言:javascript
运行
复制
spring.jpa.database=postgresql

代码语言:javascript
运行
复制
spring.jpa.database-platform = org.hibernate.dialect.PostgreSQL94Dialect

代码语言:javascript
运行
复制
spring.jpa.database=org.hibernate.dialect.PostgreSQLDialect

对错误没有影响的:

代码语言:javascript
运行
复制
Hibernate: insert into user (created_at, last_modified_at, account_id, email, hashed_password_salt, name, over_hashed_password, preferred_name, public_key, started_displaying_sites_at, watched_tutorial_at, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2017-09-08 14:41:40.177  WARN 15764 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42601
2017-09-08 14:41:40.177 ERROR 15764 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: syntax error at or near "user"
  Position: 13
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-09-08 13:51:18

问题不是方言,而是使用保留的PostgreSQL单词user的查询。您可以将引号添加到

代码语言:javascript
运行
复制
@Entity(name = "`user`")

或者重命名user表。

票数 7
EN

Stack Overflow用户

发布于 2017-09-08 14:26:47

您可以使用值hibernate.auto_quote_keyword指定配置属性true,以启用关键字的自动引用(假设在方言和/或JDBC数据库元数据中正确定义了这些关键字)。

另见映射性质

hibernate.auto_quote_keyword truefalse (默认值) 指定是否自动引用任何被视为关键字的名称。

对于Spring,您可以将其设置为spring.jpa.properties.hibernate.auto_quote_keyword=true (谢谢尼基塔·博西克)

票数 6
EN

Stack Overflow用户

发布于 2017-09-08 14:10:33

在@Entity中添加模式字段也可以解决这个问题

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46117952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档