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.

Я действительно надеюсь, что это возможно. Спасибо заранее!

Ответы на вопрос(1)

Ваш ответ на вопрос