Hibernate标识主键生成器和外键

时间:2012-05-05 20:48:52

标签: java hibernate primary-key identity

在许多地方查看并发现使用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完全忽略了这些注释属性。

0 个答案:

没有答案