JPA /休眠单向OneToMany为“ mappedBy”

时间:2019-03-27 11:31:48

标签: java hibernate jpa

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

@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类中没有Bar字段,并且@OneToMany的注释中没有@JoinColumnmappedBy。无论如何,它都是完美的:没有冗余更新-就像是双向映射。我不是JPA / Hibernate方面的专家,并且从未在tutorials / guides / docs中看到这种映射。我试图用谷歌搜索这种映射,但是没有找到任何解释。这样映射实体可以吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

参考 see ref