我可以为父表中的外键列定义不同的类型吗?

cla*_*ind 5 java postgresql hibernate jpa

我需要以代码中的关系连接到 postgreSQL 数据库。问题在于表“b”中的数据库“id”是“bigint”,表“a”中的“b_id”是“整数”,prod db 不在我的控制范围内,所以我无法更改它。

“a”中的“b_id”未定义为外键,这可能就是 postgre 允许这样做的原因。

正如预期的那样,hibernate 抛出“找到 [int4 (Types#INTEGER)],但期待 [integer (Types#BIGINT)]”

如果我通过休眠创建表,它会按预期将表“a”中的“b_id”定义为“bigint”

在不更改数据库类型的情况下验证模式的最佳方法是什么?

@Entity
@Table(name = "a")
public class A {

    @ManyToOne
    @JoinColumn(name = "b_id")
    @NotNull
    private B bId;

    ...
}

@Entity
@Table(name = "b")
public class B {

    @Id
    private Long id;

    ...
}
Run Code Online (Sandbox Code Playgroud)

gdr*_*drt 0

您可以在类中使用columnDefinition元素A

@Entity
@Table(name = "a")
public class A {

    @ManyToOne
    @JoinColumn(name = "b_id", columnDefinition = "int")
    @NotNull
    private B bId;

    ...
}
Run Code Online (Sandbox Code Playgroud)