Java Hibernate-保存嵌套关系的子级

Java Hibernate-保存嵌套关系的子级,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,我有以下方式的实体 ----------------------------------------------------实体A-------------------------------------------------------- @Entity @Table(name = "A") public class A { //bi-directional one-to-many association to B @OneToMany( mappedB

我有以下方式的实体

----------------------------------------------------实体A--------------------------------------------------------

@Entity
@Table(name = "A")
public class A {

    //bi-directional one-to-many association to B
    @OneToMany( mappedBy = "a", cascade = { CascadeType.ALL }, fetch = FetchType.LAZY )
    private List<B> b = new ArrayList<>();


    public void add_B(B b) {
        this.b.add(b);
        b.setA(this);
    }

}
@Entity
@Table(name = "B")
public class B {

    @ManyToOne( fetch = FetchType.LAZY, cascade = { CascadeType.ALL } )
    @JoinColumn( name = "A_ID" )
    private A a;

    //bi-directional one-to-many association to C
    @OneToMany( mappedBy = "b", cascade = { CascadeType.ALL }, fetch = FetchType.LAZY )
    private List<C> c = new ArrayList<>();

    public void add_C(C c) {
        this.c.add(c);
        c.setB(this);
    }

}
@Entity
@Table(name = "C")
public class C {

    @ManyToOne( fetch = FetchType.LAZY, cascade = { CascadeType.ALL } )
    @JoinColumn( name = "B_ID" )
    private B b;

}
@Mapper(
        componentModel = "spring",
        unmappedTargetPolicy = ReportingPolicy.WARN
)
public abstract class A_Mapper {

    public abstract A toEntity(DTO_A dto_a);

    @AfterMapping
    public void mapToEntity(@MappingTarget A a)
    {
        
        List<B> bs = new ArrayList<>(a.getB());
        for (B b: bs) { 
            a.add_B(b);

            for (C c:
                    b.getC() {
                b.add_C(c);
            }
        }
}
-----------------------------地图绘制者-------------------------------------------------------------------------------------

@Entity
@Table(name = "A")
public class A {

    //bi-directional one-to-many association to B
    @OneToMany( mappedBy = "a", cascade = { CascadeType.ALL }, fetch = FetchType.LAZY )
    private List<B> b = new ArrayList<>();


    public void add_B(B b) {
        this.b.add(b);
        b.setA(this);
    }

}
@Entity
@Table(name = "B")
public class B {

    @ManyToOne( fetch = FetchType.LAZY, cascade = { CascadeType.ALL } )
    @JoinColumn( name = "A_ID" )
    private A a;

    //bi-directional one-to-many association to C
    @OneToMany( mappedBy = "b", cascade = { CascadeType.ALL }, fetch = FetchType.LAZY )
    private List<C> c = new ArrayList<>();

    public void add_C(C c) {
        this.c.add(c);
        c.setB(this);
    }

}
@Entity
@Table(name = "C")
public class C {

    @ManyToOne( fetch = FetchType.LAZY, cascade = { CascadeType.ALL } )
    @JoinColumn( name = "B_ID" )
    private B b;

}
@Mapper(
        componentModel = "spring",
        unmappedTargetPolicy = ReportingPolicy.WARN
)
public abstract class A_Mapper {

    public abstract A toEntity(DTO_A dto_a);

    @AfterMapping
    public void mapToEntity(@MappingTarget A a)
    {
        
        List<B> bs = new ArrayList<>(a.getB());
        for (B b: bs) { 
            a.add_B(b);

            for (C c:
                    b.getC() {
                b.add_C(c);
            }
        }
}
@Mapper(
componentModel=“spring”,
UnappedTargetPolicy=ReportingPolicy.WARN
)
公共抽象类A_映射器{
公开摘要A实体(DTO_A DTO_A);
@后映射
公共void mapToEntity(@MappingTarget A)
{
listbs=newarraylist(a.getB());
对于(B:bs){
a、 添加_B(B);
对于(C:
b、 getC(){
b、 添加_C(C);
}
}
}
保存实体A后,A的id应设置为B项,B的id应设置为C。但引发了“NullPointer异常”。有人能告诉我如何解决此问题吗?以及如何修改代码,使A和B的id都设置为C?提前谢谢

,但出现了“NullPointer异常”已引发。确切位置。添加堆栈跟踪但引发“NullPointer异常”。确切位置。添加堆栈跟踪