以下各项有何不同:

@Entity
public class Company {

    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
    @JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
    private List<Branch> branches;
    ...
}

@Entity
public class Company {

    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, 
    mappedBy = "companyIdRef")
    private List<Branch> branches;
    ...
}

推荐答案

100 could be used on both sides of the relationship.问题是在@OneToMany侧使用@JoinColumn(罕见情况).这里的重点是physical information duplication(列名)和not optimized SQL query that will produce some additional 103 statements.

根据documentation:

因为在JPA规范中,many to one are(几乎)总是双向关系的owner side,所以一对多关联用@OneToMany(mappedBy=...)注释

@Entity
public class Troop {
    @OneToMany(mappedBy="troop")
    public Set<Soldier> getSoldiers() {
    ...
}

@Entity
public class Soldier {
    @ManyToOne
    @JoinColumn(name="troop_fk")
    public Troop getTroop() {
    ...
} 

Troop通过部队财产与Soldier有双向一对多关系.您不必(一定不能)在mappedBy侧定义任何物理映射.

要映射双向一对多,使用one-to-many side as the owning side,必须删除mappedBy元素,并将多对一@JoinColumn设置为insertable,将updatable设置为false.此解决方案未经优化,将生成一些额外的UPDATE条语句.

@Entity
public class Troop {
    @OneToMany
    @JoinColumn(name="troop_fk") //we need to duplicate the physical information
    public Set<Soldier> getSoldiers() {
    ...
}

@Entity
public class Soldier {
    @ManyToOne
    @JoinColumn(name="troop_fk", insertable=false, updatable=false)
    public Troop getTroop() {
    ...
}

Java相关问答推荐

如何管理 Wordle Game (JavaFx) 中的重复字母?

Swing 从弹出表中获取用户输入

Springboot的@Controller和@RestController注解什么时候使用,底层概念是什么?

如何使用 Spring SAML2 禁用自动生成的页面 /login 和 /logout?

Java不支持IRI?

如何总结具有特定 ID 的列表中对象的属性值并使用 Streams 将其分配给另一个对象

如何使用固定参数和可变参数制作流?

如何在没有长度和 indexOF 的情况下获取字符串中的信息. (JAVA)

如何在执行 Collectors.toMap() 之前删除会导致冲突的键

ControllerAdvice @InitBinder setDisallowedFields 不起作用

从 List 到 List 的 Java 流

使用 Amazon Java SDK 无法识别 JSON 格式

Jolt 变换 Json 数组保留其余字段

使用 wildfly 26 时无法使用 EJB Remote 读取响应

Mockito,如何在方法中创建的对象上调用验证?

使用方法返回的收集器时泛型类型不匹配 - Java 17

没有@Target 的注解类型可以在任何地方使用吗?

为什么我不能将其他类的常量添加到 java 中的 switch 语句中?

使用 Comparable 接口禁止继承类型之间的比较

如何找到与同一对象关联的最大对象计数