class A {
@Id
String aId;
@OneToMany(fetch = FetchType.LAZY)
List bsOfA
@OneToMany(fetch = FetchType.LAZY)
List csOfA
public A(String id) {
this.aId = id;
}
}
class B {
@Id
String aId;
@Id
String bId;
@ManyToOne(fetch = FetchType.LAZY)
A aOfB;
@ManyToOne(fetch = FetchType.LAZY)
C cOfB // this is some member of csOfA
public B(String id, B sourceB) {
this.aId = id;
this.bId = sourceB.bId;
}
}
class C {
@Id
String aId;
@Id
String cId;
@OneToMany(fetch = FetchType.LAZY)
A aOfC;
@ManyToOne(fetch = FetchType.LAZY)
List linkedBsToC;
public C(String id, C sourceC) {
this.aId = id;
this.cId = sourceC.cId;
}
}
< /code>
Теперь я хочу создать копию, чтобы я продолжал следующим образом < /p>
A sourceA = aRepo.getbyId(sourceAId);
A copyA = new A(newAId);
List bsOfA = new ArrayList(sourceA.getBsOfA.size());
sourceA.getBsOfA().forEach(b -> bsOfA.add(new B(newAId, b));
copyA.setBsOfA(bsOfA)
List csOfA = new ArrayList(sourceA.getCsOfA.size());
// problematic part
sourceA.getCsOfA().forEach(c -> csOfA.add(new C(newAId, c));
copyA.setCsOfA(csOfA)
< /code>
Теперь проблема заключается в том, что во время этой операции копирования я наблюдаю, что при называется конструктор C, вход C - это объект hibernate_interceptor, который имеет нулевые атрибуты (например, в этом другом посте: данные внутри Hibernate Inceptor объект, но нулевая под объективами - не может сохранить репозиторий). Выбор: < /p>
Обменивается позиция инициализации Copya's BSOFA и CSOFA: < /li>
< /ol>
List csOfA = new ArrayList(sourceA.getCsOfA.size());
sourceA.getCsOfA().forEach(c -> csOfA.add(new C(newAId, c));
copyA.setCsOfA(csOfA)
List bsOfA = new ArrayList(sourceA.getBsOfA.size());
sourceA.getBsOfA().forEach(b -> bsOfA.add(new B(newAId, b));
copyA.setBsOfA(bsOfA)
< /code>
Установить fetchtype.eager для cofb < /li>
Модифицировать конструкторы < /li>
< /ol>
public C(String id, C sourceC) {
this.aId = id;
this.cId = sourceC.getCId(); // How is this different from sourceC.id ?!
}
< /code>
может кто -нибудь, пожалуйста, просветите меня по этому вопросу? Я определенно выберу № 3, потому что кажется легче всего настроить, но я все еще не могу понять, что не так с исходным кодом. Заранее большое спасибо
Подробнее здесь: https://stackoverflow.com/questions/797 ... rning-null
Мобильная версия