首页 > 解决方案 > JPA/Hibernate 单向 OneToMany 为“mappedBy”

问题描述

我最近在我们的仓库中发现了这样的映射:

@Entity
...
public class Foo{
     ...
     @OneToMany(mappedBy = "someField", cascade = CascadeType.ALL, orphanRemoval = true)
     public Set<Bar> bars;
     ...
}

@Entity
@IdClass(Bar.Key.class)
...
public class Bar{
     @Id
     public long someField;
     @Id
     public long anotherField;
     ...
     static class Key implements Serializable {
        public long someField;
        public long anotherField;
     }
}

两个表中都没有外键。我很惊讶课堂上没有@ManyToOne字段并且没有注释as 。无论如何,它工作得很好:没有多余的更新——就像它是一个双向映射。我不是 JPA/Hibernate 方面的专家,而且我从未在教程/指南/文档中看到过这样的映射。我试图用谷歌搜索这样的映射,但没有找到任何解释。可以像这样映射实体吗?谢谢!Bar@OneToMany@JoinColumnmappedBy

标签: javahibernatejpa

解决方案


双向一对多和多对一关联映射都很好。但是您应该避免在域模型中进行单向的一对多关联。否则,Hibernate 可能会创建意外的表并执行比您预期更多的 SQL 语句

单向一对多关联的定义似乎不是问题。您只需要一个映射关联和@OneToMany 关系的属性。

参考见参考


推荐阅读