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

标签 java postgresql hibernate jpa

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

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

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

如果我通过 hibernate 创建表,它会按预期将表“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;

    ...
}

最佳答案

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

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

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

    ...
}

关于java - 我可以为父表的外键列定义不同的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54748072/

相关文章:

java - 如何使用maven构建一个自包含的可执行jar?

javascript - 将 Sequelize 连接到使用 Homebrew 安装的 Postgres

java - PGpoint Hibernate(反)序列化异常

java - 表示整数的 float 是否也会出现舍入错误?

java - Struts2 Fileupload 在操作类中给出空文件

postgresql - Postgres : "AT TIME ZONE ' localtime '"== "AT TIME ZONE 'utc' "?

java - 传递 Spring 数据 JPA 和 hibernate 分离实体以保持多对多关系

java - 如何使用 Spring Boot Hibernate 将 XML 字符串保存在 Postgresql 表的 XML 类型列中

java - 多线程程序比单线程程序花费更长的时间(Java)

postgresql - 我可以在不在 Alpine 上安装 postgres 的情况下安装 pg_dump 吗?