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

时间:2019-02-18 13:08:48

标签: java postgresql hibernate jpa

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

“ 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;

    ...
}

1 个答案:

答案 0 :(得分:0)

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

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

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

    ...
}