在许多地方查看并发现使用postgresql的hibernate可以使用IDENTITY主键生成器映射到serial / bigserial表列。假设我有跟随实体:
@Entity
class A {
long id;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
public long getId() { return id; }
}
效果很好,ddl看起来像:
create table A (id bigserial)
不幸的是,任何通过@ManyToOne引用'a'的尝试都会产生同样重要的外键列。
@Entity
class B {
// id ommitted ...
A a;
@ManyToOne
public A getA() {
return a;
}
}
生成ddl,如下所示:
create table B (..., a_id bigserial)
在大多数情况下,这可以正常工作。但从逻辑上讲,这是完全错误的。 a_id与bigserial“datatype”无关。
有没有办法告诉hibernate在表B中使用bigint作为列a_id?
试图用@JoinColumn或@Column注释中的columnDefinition覆盖没有运气的getter。 Hibernate完全忽略了这些注释属性。