Кто-нибудь знает, как запретить загрузку коллекции или связь «многие-к-одному» в спящем режиме?
У меня есть случай использования, когда мне нужно загрузить объект, но вызывающая программа может определить, загружены определенные свойства или нет. То же самое относится и к части коллекций: некоторые строки должны быть извлечены, а другие нет.
классы доменов:
public class SomeClass {
private SomeClass parent;
private Set<OtherClass> collection;
}
public class OtherClass {
private Date startDate;
private Date endDate;
}
public class Dao {
public SomeClass loadClass(long id, boolean parents, boolean historicalData) {
// load SomeClass
// if parents == true, load parent, otherwise leave <null>
// if historicalData == false, load OtherClass where endDate == <null>
}
}
Я подумал о 2 решениях, но сейчас я перейду, если это возможно, с помощью критерия или запроса.
Решение 1 состоит в том, чтобы не связывать SomeClass с OtherClass и отношения родитель / потомок в конфигурации гибернации и загружать сопоставление в коде.
Решение 2 состоит в том, чтобы определить различные сопоставления с разными именами сущностей для особых случаев.
В этом случае вызывающая сторона может находиться в другой JVM или транзакции, поэтому сеанс закрывается, поэтому отложенная загрузка не является реальной возможностью.