我需要以代码中的关系连接到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;
...
}
答案 0 :(得分:0)
您可以在A
类中使用columnDefinition元素。
@Entity
@Table(name = "a")
public class A {
@ManyToOne
@JoinColumn(name = "b_id", columnDefinition = "int")
@NotNull
private B bId;
...
}