我最近在我们的仓库中发现了这样的映射:
@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
的注释中没有@JoinColumn
为mappedBy
。无论如何,它都是完美的:没有冗余更新-就像是双向映射。我不是JPA / Hibernate方面的专家,并且从未在tutorials / guides / docs中看到这种映射。我试图用谷歌搜索这种映射,但是没有找到任何解释。这样映射实体可以吗?
谢谢!
答案 0 :(得分:1)
双向一对多和多对一关联映射都很好。但是,您应避免域模型中的单向一对多关联。否则,Hibernate可能会创建意外的表并执行比您预期的更多的SQL语句。
单向一对多关联的定义似乎不是问题。您只需要一个映射关联和@OneToMany关系的属性。
参考 see ref