Quarkus Hibernate ORM在两个含@OneToMany关联的实体继承同一父类时生成有缺陷的关联表
Quarkus Hibernate ORM在两个含@OneToMany关联的实体继承同一父类时生成有缺陷的关联表
最近在Quarkus项目里用Hibernate ORM踩了个坑:当两个继承自同一父实体的子类都配置了@OneToMany关联时,Hibernate自动生成的关联表存在缺陷,直接导致数据关联逻辑混乱。先给大家贴一下我的实体类结构:
父实体代码:
@Entity public class ParentContainer { @Id @GeneratedValue public Long id; }
第一个子类Container1,带有@OneToMany关联:
@Entity public class Container1 extends ParentContainer{ @OneToMany public Set<Part> parts; }
第二个子类Container2(代码有截断,但核心是同样要配置@OneToMany关联):
@Entity public class Container2 extends ParentContainer { @One
我试过切换不同的继承策略,不管是默认的单表继承还是Joined继承,Hibernate生成的关联表都有问题。比如它根本没为不同子类的关联生成独立的外键约束,反而把两个子类的@OneToMany关联当成同一份来处理——查询Container1的parts时,会意外混进Container2关联的Part数据,反过来查Container2的关联数据也是一样乱。生成的关联表结构完全不符合预期,根本没区分开两个子类的关联关系。
备注:内容来源于stack exchange,提问作者el_Yanuki
相关产品推荐
相关产品推荐

