Java n+;1个问题与延迟加载一对一的关系

Java n+;1个问题与延迟加载一对一的关系,java,hibernate,jpa,spring-data-jpa,hibernate-mapping,Java,Hibernate,Jpa,Spring Data Jpa,Hibernate Mapping,我的问题是,当一对一关系中出现空能力时,甚至我的子类主键与父类主键相同,所以当在插入中的一对一关系上插入@PrimaryKeyJoinColumn时,我看到了下面的链接问题 当我删除此标签时,n+1问题已解决…那么我如何解决它请帮助 private SiteSecurity siteSecurity; private SiteDetails details; private SiteAvr avr; private SiteRectifier rectifier; @OneToOne( fet

我的问题是,当一对一关系中出现空能力时,甚至我的子类主键与父类主键相同,所以当在插入中的一对一关系上插入@PrimaryKeyJoinColumn时,我看到了下面的链接问题

当我删除此标签时,n+1问题已解决…那么我如何解决它请帮助

private SiteSecurity siteSecurity;
private SiteDetails details;
private SiteAvr avr;
private SiteRectifier rectifier;

@OneToOne( fetch = FetchType.LAZY, mappedBy = "site")
@PrimaryKeyJoinColumn
关于一对一关系的父类字段中

    @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "site"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
    return this.id;
}

public void setId(Integer id) {
    this.id = id;
}

@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
public Site getSite() {
    return site;
}

public void setSite(Site site) {
    this.site = site;
}

这是子类,因此如何解决问题NOTNULL和n+1,只需在
OneToOne
关系中设置
optional=true
,如:

@OneToOne(fetch = FetchType.LAZY, optional=true)
@PrimaryKeyJoinColumn
public Site getSite() {
    return site;
}

为了避免n+1问题,如果站点表有一行,则确保一对一关系与另一个表同步,这样另一个一对一关系表就有一行与之对应,并且此注释@PrimaryKeyJoinColumn就在它们上面

在我的例子中,这个策略可以避免n+1问题

请大家看完这篇文章后也简单的阐述一下一对一的关系