一对多 等关系映射

本文详细解析了一对多(@OneToMany)关系配置方法及其在实体类中的应用技巧。重点介绍了如何通过注解实现数据表之间的关联,包括配置双向关系映射、加载策略选择及外键的指定等内容。

简单的说些关于@oneToMany 自己理解的知识:

1,注解配置到字段或者get方法上;
2,如果使用了mappBy 是表示双向关系映射:即 查询A表会查询B表,查询B表也会查询A表,使用了mappBy那么A表和B表都需要配置
3,后面是Many结尾(如OneToMany)则默认会懒加载,而设置 fetch = FetchType.EAGER 就是使用立即加载方式
4,@JoinColumn是外键
/**
     * 这里配置关系,并且确定关系维护端和被维护端。mappBy表示关系被维护端,只有关系端有权去更新外键。
     * 这里还有注意OneToMany默认的加载方式是赖加载。当看到设置关系中最后一个单词是Many,
     * 那么该加载默认为懒加载
     */
    @OneToMany(cascade = { CascadeType.REFRESH, CascadeType.PERSIST,CascadeType.MERGE, CascadeType.REMOVE } ,fetch = FetchType.EAGER)
    @JoinColumn(name="adviceId")


 简单的一对多查询,如果是第三方表建立的关系,只需要一个@OneToMany就行了,例如:

@Entity
public class Company {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<Employee> employee=new ArrayList<>();

注意3点,

第一:fetch = FetchType.EAGER  设置立即查询
第二:集合List属性名要和集合对象名一致, employee;不能用employeeList 等名称
第三:由于设置的立即查询,那么第三方关系表的属性上如果是column_id的表字段,则必需指定@column(name="column_id")

简单的一对多查询,如果只是涉及到二张表的话,需要@oneToMany 以及 @joinColumn 注解即可

转载于:https://www.cnblogs.com/dwb91/p/6548774.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值