hibernate-保存嵌套关系的子级

kyvafyod  于 2021-06-29  发布在  Java
关注(0)|答案(8)|浏览(301)

我有以下几种实体

cotxawn7

cotxawn71#


  1. @Entity
  2. @Table(name = "B")
  3. public class B {
  4. @ManyToOne( fetch = FetchType.LAZY, cascade = { CascadeType.ALL } )
  5. @JoinColumn( name = "A_ID" )
  6. private A a;
  7. //bi-directional one-to-many association to C
  8. @OneToMany( mappedBy = "b", cascade = { CascadeType.ALL }, fetch = FetchType.LAZY )
  9. private List<C> c = new ArrayList<>();
  10. public void add_C(C c) {
  11. this.c.add(c);
  12. c.setB(this);
  13. }
  14. }
展开查看全部
v1uwarro

v1uwarro2#

---------a的Map器

pu3pd22g

pu3pd22g3#

------实体b

dojqjjoe

dojqjjoe4#

-------实体c

ocebsuys

ocebsuys5#


  1. @Entity
  2. @Table(name = "A")
  3. public class A {
  4. //bi-directional one-to-many association to B
  5. @OneToMany( mappedBy = "a", cascade = { CascadeType.ALL }, fetch = FetchType.LAZY )
  6. private List<B> b = new ArrayList<>();
  7. public void add_B(B b) {
  8. this.b.add(b);
  9. b.setA(this);
  10. }
  11. }
eqfvzcg8

eqfvzcg86#


  1. @Entity
  2. @Table(name = "C")
  3. public class C {
  4. @ManyToOne( fetch = FetchType.LAZY, cascade = { CascadeType.ALL } )
  5. @JoinColumn( name = "B_ID" )
  6. private B b;
  7. }
wn9m85ua

wn9m85ua7#

--实体a

kcrjzv8t

kcrjzv8t8#


  1. @Mapper(
  2. componentModel = "spring",
  3. unmappedTargetPolicy = ReportingPolicy.WARN
  4. )
  5. public abstract class A_Mapper {
  6. public abstract A toEntity(DTO_A dto_a);
  7. @AfterMapping
  8. public void mapToEntity(@MappingTarget A a)
  9. {
  10. List<B> bs = new ArrayList<>(a.getB());
  11. for (B b: bs) {
  12. a.add_B(b);
  13. for (C c:
  14. b.getC() {
  15. b.add_C(c);
  16. }
  17. }
  18. }

保存实体a后,a的id应设置为b项,b的id应设置为c项。但是抛出了一个“nullpointer异常”。有人能告诉我怎么修吗。如何修改代码,使a和b的id都设置为c?提前谢谢

展开查看全部

相关问题