我已将hibernate应用设置为使用以下属性:
spring.datasource.url: jdbc:postgresql://localhost:5432/users
spring.datasource.username=james
spring.datasource.password=root
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=create-drop
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy
#spring.jpa.database: MySql
spring.jpa.database = postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
我还创建了一个postgres数据库 用户 ,但是当我运行我的应用程序时,它会抛出所有这些不成功的alter table错误?!
Hibernate: drop table if exists user cascade
2016-06-23 10:46:05.406 ERROR 3364 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: drop table if exists user cascade
2016-06-23 10:46:05.407 ERROR 3364 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : ERROR: syntax error at or near "user"
Position: 22
Hibernate: alter table user_credential drop constraint FK_14ncv1m0gqncrbiagrs4uaqo8
2016-06-23 10:36:36.199 ERROR 3235 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table user_credential drop constraint FK_14ncv1m0gqncrbiagrs4uaqo8
2016-06-23 10:36:36.199 ERROR 3235 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : ERROR: relation "user_credential" does not exist
Hibernate: alter table user_roles drop constraint FK_5q4rc4fh1on6567qk69uesvyf
2016-06-23 10:36:36.200 ERROR 3235 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table user_roles drop constraint FK_5q4rc4fh1on6567qk69uesvyf
2016-06-23 10:36:36.200 ERROR 3235 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : ERROR: relation "user_roles" does not exist
Hibernate: alter table user_roles drop constraint FK_g1uebn6mqk9qiaw45vnacmyo2
2016-06-23 10:36:36.200 ERROR 3235 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table user_roles drop constraint FK_g1uebn6mqk9qiaw45vnacmyo2
2016-06-23 10:36:36.200 ERROR 3235 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport : ERROR: relation "user_roles" does not exist
在mysql上一切正常,它创建的表没有任何戏剧,我在mysql中使用了以下属性:
#spring.datasource.url: jdbc:mysql://localhost/users
#spring.datasource.username=root
#spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.jpa.hibernate.ddl-auto=create-drop
##spring.jpa.hibernate.ddl-auto=update
#spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy
#spring.jpa.database: MySql
#spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
##spring.jpa.database-platform=org.hibernate.spatial.dialect.mysql.MySQLSpatialDialect
可能是因为我使用了来自vividsolutions的Point
数据类型吗?
import com.vividsolutions.jts.geom.Point;
@Column(name = "coords", columnDefinition="Geometry", nullable = true)
private Point location;
我是否还有其他任何东西允许hibernate使用postgres?我也在我的postgres服务器上设置postgis
。
我删除了Point声明,它仍然会抛出相同的错误......所以这不是问题。
答案 0 :(得分:17)
事实证明, postgres 中没有名为user
的表格。只需将表格名称从 用户 更改为 user_entity 即可解决此问题。
答案 1 :(得分:0)
由于接受的答案似乎不是最新的,我想提出不同的解决方案:
注意:我想您正在使用JPA并将其命名为“实体用户”。 另外请注意\“
def treefix(p):
if p.parent and p.parent.size==1: return treefix(p.parent)
p.children=[]
sizefix(p)
顺便说一句:对于名为“授权”的实体,也会出现相同的问题
尽管这适用于当前的postgres / hibernate版本,但我还是建议将实体命名为user_entity或users。