我在Postgres数据库中使用JPA(hibernate),我的hibernate数据库配置如下:
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
properties.setProperty("hibernate.hbm2ddl.auto","validate");
我有一张属性为created_by_user_id
CREATE TABLE dppm_main.user_account_profile
( ....//other columns
created_by_user_id integer
)
映射到JPA实体,如下所示:
@Column(name = "created_by_user_id")
private Long createdByUserId;
在进行架构验证时,我收到以下错误:
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)]**
我该如何解决?我在很多地方遇到此问题,因此可以通过扩展PostgreSQL82Dialect
而不是 columnDefinition 来解决此问题。
答案 0 :(得分:1)
关于Java类型和Postgres类型之间类型不匹配的例外很明显。
我没有清楚地了解你在Postgres中的类型是什么,所以我指出了几种类型的转换:
Postgres :smallint
到Java - > java.lang.Integer
Postgres :integer
到Java - > java.lang.Integer
Postgres :bigint
到Java - > java.lang.Long
话虽如此,只需改变:
@Column(name = "created_by_user_id")
private Long createdByUserId;
要:
@Column(name = "created_by_user_id")
private Integer createdByUserId;