Hibernate Lazy Loading Proxy, несовместимый с другими платформами - PullRequest
3 голосов
/ 02 июня 2010

Я сталкивался с несколькими случаями, когда фреймворки, которые принимают POJO для выполнения некоторой работы с прокси-компонентами Hibernate.

Например, если я xml аннотирую bean-компонент для фреймворка X и передаю его фреймворку X, он не распознает bean-компонент, потому что ему передан прокси-объект, у которого нет аннотаций для framework X.

Есть ли общее решение для этого? Я предпочел бы не определять бин как загруженный с нетерпением или поворот ленивой загрузки в любом месте приложения.

1 Ответ

5 голосов
/ 02 июня 2010

Вы можете разархивировать объект перед его передачей:

public static <T> T initializeAndUnproxy(T var) {
    if (var == null) {
        throw new IllegalArgumentException("passed argument is null");
    }

    Hibernate.initialize(var);
    if (var instanceof HibernateProxy) {
        var = (T) ((HibernateProxy) var).getHibernateLazyInitializer()
                .getImplementation();
    }
    return var;
}
...