java - JPA/Hibernate 单向 OneToMany 为 'mappedBy'

标签 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;
     }
}

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

最佳答案

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

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

引用 see ref

关于java - JPA/Hibernate 单向 OneToMany 为 'mappedBy',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55376166/

相关文章:

java - 将 JsonElement 保留到单个表列中

java - 如何更改 JPA - Spring Framework 数据库中的顺序

java - JPA向下转型以访问子类方法

java - 在java中从维基百科转储中搜索文本的最佳方法是什么?

java - 共享首选项始终采用默认值

hibernate - 回滚应该是一个异常(exception)吗? (具体为: in web-apps and with OSIV)

java - hibernate 中的异常 "org.hibernate.PersistentObjectException"

java - 合并 Hibernate 集合中的项目

java - 是否有结构搜索和替换中使用的所有关键字的列表?

java - com.ximpleware 解析 XML - XPath - ==> 末尾或附近的语法错误