我有一个名为User
的实体,它通向一个名为user
的表,在PostgreSQL中,该表应该被引号包围,这样它才能工作。我知道我可以指定一个自定义表名,但是Hibernate不应该自动指定引号吗?
我被告知,也许Hibernate没有使用PostgreSQL方言。当我的数据库配置如下时,这种情况是否可能:
spring.datasource.url = jdbc:postgresql://localhost/database_name
spring.datasource.username = username
spring.datasource.password = password
如果是这样的话,我如何使Hibernate使用正确的方言?
我试过:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
和
spring.jpa.database=postgresql
和
spring.jpa.database-platform = org.hibernate.dialect.PostgreSQL94Dialect
和
spring.jpa.database=org.hibernate.dialect.PostgreSQLDialect
对错误没有影响的:
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
发布于 2017-09-08 13:51:18
问题不是方言,而是使用保留的PostgreSQL单词user
的查询。您可以将引号添加到
@Entity(name = "`user`")
或者重命名user
表。
发布于 2017-09-08 14:26:47
发布于 2017-09-08 14:10:33
在@Entity中添加模式字段也可以解决这个问题
https://stackoverflow.com/questions/46117952
复制相似问题