java - JPA 注释和 mappedBy

标签 java jpa

我正在开发 java 应用程序并使用 JPA 与数据库交互,我有两个重要的问题:

  1. 我想在两个类之间建立双向链接,因为我需要访问双方的数据。让我们以 A * -1 B 的两个类 A 和 B 为例(如 UML 图,A 有唯一的 B,B 有多个 A ..)。

在 A 中:

@ManyToOne
private B attribute; 

在 B 中

@OneToMany
private List<A> list;

这足以建立双向链接吗?还是必须使用 mappedBy?

  1. 这让我们想到了我的第二个问题,如果 mappedBy 放置在错误的一侧,它只会影响性能甚至更糟? (数据不持久)?例如,在基数 1-* 的情况下,我们别无选择,mappedBy 应该在 OneToMany 的一侧,在这种情况下:

在 B 中

@OneToMany(mappedBy = "attribute")
private List<A> list;

知道我不会创建类 B,创建一个列表并分配对象,我将在 B 面什么也不做。我将重复创建类 A,每次我为其分配一个 B 对象,所以我可能有几个具有相同受影响对象 B 的类 A,我希望 B 自动更新此链接及其 A 列表。

最佳答案

Is that enough to make the two-way link? or it is mandatory to use the mappedBy?

对于双向关系,它是强制性的。

Which brings us to my second question, if the mappedBy is placed on the wrong side, it'll just impact the performance or even worse ? (data not persisted)?

更糟的是 - 它不会工作,但它不会静默失败,你会看到异常。

说起来简单易懂。它与 @OneToMany 一起使用。

This可能会帮助您更好地理解这一点。

关于java - JPA 注释和 mappedBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31373412/

相关文章:

java - spring application.properties 中的第二个数据源用于测试?

java - SAX 解析器;读取特殊字符时出现错误

java - 如何强制事件监听器在 java 中最后执行?

java - 如何对这两个耦合类应用解耦

java - sybase 在插入/更新/删除时更新千兆空间缓存

java - 我可以在 EJB 3.2 中获得类似实体 bean 的东西吗?

java - Swing - 无法将默认任务栏图标更改为自定义图标

java - Autowired 带注释的 bean 在 Listener 类中获取 null

java - Hibernate 模式验证失败,MySQL CHAR 映射到 String

java - org.hibernate.MappingException : Could not determine type for: java. util.Collection,在表