Связанный ленивый перехватчик нагрузки возвращается нольJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Связанный ленивый перехватчик нагрузки возвращается ноль

Сообщение Anonymous »

У меня есть следующие объекты: < /p>
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»