乐趣区

关于jpa:JPA一对多多对多配置

单向一对多

@Data
@Entity
@Table(name = "banner")
public class Banner {
    @Id
    private Integer id;

    private String name;

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "bannerId", referencedColumnName = "id")
    private List<BannerItem> items;
}

下面为双方配置,@JoinColumn 注解外面 name 示意多方中配置的外键名称,referencedColumnName 为外键对应的双方主键。

@Data
@Entity
@Table(name = "banner_item")
public class BannerItem  {
    @Id
    private Integer id;

    private String img;

    private Integer bannerId;

    private String name;

}

下面为双方配置,没有什么非凡的。

双向一对多

@Data
@Entity
@Table(name = "banner")
public class Banner {
    @Id
    private Integer id;

    private String name;

    @OneToMany(fetch = FetchType.LAZY, mappedBy="banner")
    private List<BannerItem> items;
}

双向时双方不须要 @JoinColumn 注解,须要在 @OneToMany 上增加 mappedBy 属性指明多方的映射属性。

@Data
@Entity
@Table(name = "banner_item")
public class BannerItem  {
    @Id
    private Integer id;

    private String img;

    private Integer bannerId;

    private String name;

    @ManyToOne
    @JoinColumn(name="bannerId")
    private Banner banner;

}

多方的注解应用 @ManyToOne,标注在映射双方的属性上,同时须要加上 @JoinColumn 注解指明外键。

退出移动版