JPA Hibernate хочет ленивую загрузку, чтобы вернуть пустую коллекцию
В настоящее время я использую JPA-Hibernate и хочу, чтобы коллекции были пустыми, пока я не вызову связанный метод get (). Я пытался в течение нескольких дней без какого-либо успеха. Причина, по которой я этого хочу, заключается в том, что я использую Exterialize (или Serialize) и не всегда хочу, чтобы коллекции были там при отправке сериализованной строки клиенту.
@Entity
public class Thread implements Externalizable {
static final long serialVersionUID = 9L;
@OneToMany(mappedBy = "parentThread", fetch = FetchType.LAZY)
@LazyCollection(LazyCollectionOption.EXTRA)
public Collection<Reply> getReplies() {
return replies;
}
А вот модель ответа:
@Entity
public class Reply implements Externalizable {
static final long serialVersionUID = 8L;
@ManyToOne
@JoinColumn(name = "threadId", referencedColumnName = "id", nullable = false)
public Thread getParentThread() {
return parentThread;
}
Этот код - то, что я использую для сериализации модели:
public static final String serialize(Serializable object) throws IOException, ClassNotFoundException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( object );
oos.close();
BASE64Encoder base64Encoder = new BASE64Encoder();
return new String( base64Encoder.encode(baos.toByteArray()));
}
Это то, что я использую, чтобы найти объекты потока
models.Thread thread = em.find(models.Thread.class, threadId);
Если я использую entityManager.find () или запрос, он все равно загружает список ответов. Чтобы быть более ясным, я хотел бы, чтобы коллекция была пустой, когда я генерирую сущность. Затем, если я вызову get (), я бы хотел, чтобы он заполнялся
На следующем рисунке показано, что ответы хранятся в списке. Они не содержат никаких значений, что, как я полагаю, связано с тем, что отложенная загрузка означает, что они являются прокси-объектами, которые на самом деле не были извлечены из базы данных? Пожалуйста, поправьте, если я ошибаюсь. В качестве примечания, если возможно сохранить список в виде массива или другой стандартной реализации списка, это было бы здорово. Я понимаю, что JPA хочет использовать нотацию persistentBag / persistentSet, так как они могут иметь дублирующиеся значения, которые стандартная реализация не допускает, и, возможно, некоторые другие причины. Но для сериализации модели с клиентом было бы замечательно не нуждаться в библиотеках, и они также, кажется, не работают с android, потому что SSID, кажется, изменяется в библиотеках при использовании android.
Я действительно надеюсь, что это возможно. Спасибо заранее!