sur*_*ahl 4 postgresql hibernate jpa
我在 Postgres 数据库中使用 JPA(休眠),我的休眠数据库配置如下:
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
properties.setProperty("hibernate.hbm2ddl.auto","validate");
Run Code Online (Sandbox Code Playgroud)
我有一张带财产的桌子 created_by_user_id
CREATE TABLE dppm_main.user_account_profile
( ....//other columns
created_by_user_id integer
)
Run Code Online (Sandbox Code Playgroud)
映射到 JPA 实体如下:
@Column(name = "created_by_user_id")
private Long createdByUserId;
Run Code Online (Sandbox Code Playgroud)
在进行架构验证时,我收到以下错误:
org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column
type encountered in column [created_by_user_id] in table [user_account_profile];
**found [int4 (Types#INTEGER)], but expecting [int8 (Types#BIGINT)]**
Run Code Online (Sandbox Code Playgroud)
我该如何解决?我在很多地方都遇到了这个问题,所以是否可以通过扩展PostgreSQL82Dialect而不是columnDefinition来修复它。
例外显然是关于 Java 类型和 Postgres 类型之间的类型不匹配。
我不清楚你在 Postgres 中的类型是什么,所以我将指出一些类型转换:
Postgres :smallint 到 Java -->java.lang.Short
Postgres :integer 到 Java -->java.lang.Integer
Postgres :bigint 到 Java -->java.lang.Long
话虽如此,只需更改:
@Column(name = "created_by_user_id")
private Long createdByUserId;
Run Code Online (Sandbox Code Playgroud)
到:
@Column(name = "created_by_user_id")
private Integer createdByUserId;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7818 次 |
| 最近记录: |