【发布时间】:2021-04-07 01:21:29
【问题描述】:
我在休眠中进行多对一映射。我正在使用我之前创建的现有表进行一对多映射(客户和订单),但是当我尝试映射和更新这些表时,我无法做到我不知道应该如何处理?我想插入数据,这意味着我想使用命令行运行器为该客户创建更多订单。
你能帮我解决这个问题吗
感谢您的帮助。
【问题讨论】:
-
请将您的代码添加为文本。
标签: spring-boot hibernate
我在休眠中进行多对一映射。我正在使用我之前创建的现有表进行一对多映射(客户和订单),但是当我尝试映射和更新这些表时,我无法做到我不知道应该如何处理?我想插入数据,这意味着我想使用命令行运行器为该客户创建更多订单。
你能帮我解决这个问题吗
感谢您的帮助。
【问题讨论】:
标签: spring-boot hibernate
映射一对多和多对一关联
这两个关联分别是从欠实体和从属实体的角度看的同一个关联。
Student one-to-many Address
Address many-to-one Student
@OneToMany 注释可以应用于表示关联的映射“多”端的集合或数组的“一”端实体类的字段或属性值。
@ManyToONe 两个实体之间的关系是通过管理“one”端实体的 FK(Foreign key),作为“many”实体表中的一列。
> **Bidirectional one-to-many using ```@JoinColumn```**
@Entity
public class Student{
@OneToMany(cascade = CasecadeType.ALL)
@JoinTable(name="Student_FK")
public set<Address> getAddress(){
return address;
}
}
一对多端作为欠款端,您必须删除 mappedBy 元素并将
@ManyToOne @JoinColumn设置为可插入且可更新为 false。此解决方案未优化,会产生一些额外的UPDATE Statement。
@Entity
public class Address{
@ManyToOne(cascade = CasecadeType.ALL)
@JoinColumn(name="STUDENT_FK", insertable = false, updatable = false)
public Student student;
}
更多详情请查看此链接Link
【讨论】:
Student 和Address 类。