У меня возникла проблема с JPA, отказывающей в получении коллекции, которая настроена на получение лени. Вот как юридические лица определяются:Проблема с JPA, не загружающая ленивую подборку
Сообщить Entity
//bi-directional many-to-one association to Host
@OneToMany(mappedBy="report", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private Set<Host> hosts;
Хост Entity
//bi-directional many-to-one association to Report
@ManyToOne
@JoinColumn(name="INCIDENT_ID")
private Report report;
По некоторым причинам я не могу получить хозяева установить загрузку в память и хостов всегда нуль , Я нашел следующее на StackOverflow должности, но он не работает либо:
public void loadHosts(Report report)
{
PersistenceUtil unitUtil = getEntityManager().getEntityManagerFactory().getPersistenceUnitUtil();
System.out.println("isLoaded(report, \"hosts\"): " + unitUtil.isLoaded(report, "hosts"));
initializeCollection(report.getHosts());
System.out.println("isLoaded(report, \"hosts\"): " + unitUtil.isLoaded(report, "hosts"));
}
private void initializeCollection(Collection<?> collection)
{
if(collection == null)
{
return;
}
collection.iterator().hasNext();
}
Вывод из вышеизложенного:
SystemOut O isLoaded(report, "hosts"): false
SystemOut O isLoaded(report, "hosts"): false
Есть идеи?
В этом случае я читаю существующий отчет из базы данных. Отчет и связанные с ним хосты были записаны в базу данных с использованием этих объектов. Я попытался вызвать report.getHosts(), и делаю это в приведенном выше коде в строке: initializeCollection (report.getHosts()); – bnorwood
Мне жаль, я пропустил эту линию. –
Помог ли fetchtype.eager? –