关于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注解指明外键。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理