使用注解的方式进行hibernate逆向工程出现的Bug
设有表A与表B是一对一的关系(其中外键存在于表B中指向表A)
逆向工程生成的模式是:
表 A(实体类) :
...
@OneToOne(fetch = FetchType.LAZY, mappedBy = "a")
...
表 B(实体类):
....
@OneToOne(fetch = FetchType.LAZY, mappedBy = "b")
....
而实际上mappedBy是使用在OneToOne, OneToMany, ManyToMany中没有外键的一方
而存在外键的一方应该使用
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "a")
so正确应该是 :
表A:
...
@OneToOne(fetch = FetchType.LAZY, mappedBy = "a")
...
表B:
...
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "b_a")
...
结论 : 逆向工程也可能出错