Как заставить инициализировать прокси Hibernate JPA для использования его в вызове JSON

У меня есть приложение Spring 3 + JPA 2.0. В моем @Controller Мне нужен инициализированный объект, но у меня есть прокси, я должен иметь возможность инициализировать его программно. Мне нужна функциональность, аналогичная org.hibernate.Hibernate.initialize(Object),

Может кто-нибудь помочь. Объект используется для операций AJAX. Если свойства являются прокси, я не могу отправить его как JSON

3 ответа

Решение

Нет JPA вариант, насколько мне известно. Вы должны использовать Hibernate.initialize(..),

Фактически, когда я взглянул на реализацию в спящем режиме, ленивые коллекции, по-видимому, были инициализированы во многих случаях, чего и не ожидали. подобно entityManager.contains(..) а также Persistence.getPersistenceUtil().isLoaded(...), Попробуйте, но я не думаю, что вы должны полагаться на такие детали реализации.

Я знаю, что уже поздно, и ответ принят, но другой стандартный способ JPA - вызвать метод size() в списке, который вы хотите инициализировать, до возвращения объекта из DAO:

Object.getList().size(); 

Это избавит вас от необходимости обманывать и использовать механизм реализации для инициализации

Мы делаем аналогичную вещь в нашем приложении, и мы сочли полезным разделить наши объекты сущностей базы данных и получить еще одну группу классов для вывода JSON.

Если вы используете инфраструктуру JSON, которая просто проверяет ваш объект и отбирает некоторый JSON для каждого свойства объекта, тогда у вас есть возможность иметь такие объекты, как:

PersonEntity - класс, управляемый JPA и PersonJsonOutput - класс, специально разработанный для вывода в формате JSON

Может быть безопаснее в долгосрочной перспективе. Это позволяет вам вносить изменения в базу данных, которые не отражаются автоматически в вашей службе JSON, возможно, вы захотите создать версию своей службы JSON, а не ломать старые версии, как только ваша сущность базы данных изменится.

Это также дает вам больший контроль над выводом JSON с точки зрения, скажем, форматов даты или преобразования чисел в базе данных в строки JSON и т. Д.

Этот ответ на самом деле зависит только от того, как вы генерируете свой JSON, но похоже, что ваша библиотека занимается самоанализом.

Другие вопросы по тегам