2011-01-12 10 views

Respuesta

4

No tengo ninguna opción de JPA que yo sepa. Debe usar Hibernate.initialize(..).

De hecho, cuando eché un vistazo a la implementación de hibernación, las colecciones perezosas parecen inicializarse en muchos casos que uno no esperaría. Como entityManager.contains(..) y Persistence.getPersistenceUtil().isLoaded(...). Pruébelo, pero no creo que deba confiar en los detalles de implementación.

+0

Sí, gracias, creo que este podría haber sido el caso. No quería crear objetos adicionales y luego enviarlos a la vista. Como todavía estamos en las primeras etapas del proyecto, decidimos pasar a hibernar ya que las razones de JPA no se han cumplido :). Ahora, para todos los usuarios de Hibernate simplemente use 'Hibernate.initialise (..)' – pmanolov

0

Estamos haciendo algo similar en nuestra aplicación y hemos encontrado que es útil dividir los objetos de nuestra entidad de base de datos y tener otra serie de clases para la salida JSON.

Si está utilizando un marco JSON que solo inspecciona el objeto y mandriles algunos JSON para cada propiedad en el objeto a continuación, ser capaz de tener objetos tales como:

PersonEntity - Clase gestionado por la APP y PersonJsonOutput - Clase diseñada específicamente para la salida JSON

Puede ser más seguro a largo plazo. Esto le permite tener cambios en la base de datos que no se reflejan automáticamente en su servicio JSON, es posible que desee versionar el servicio JSON tal vez en lugar de romper versiones antiguas tan pronto como cambie la entidad de su base de datos.

También le da un mayor control de la salida de JSON en términos de formatos de fecha decir o números de extractores en la base de datos a ser cadenas en su JSON, etc ...

esta pregunta en realidad sólo depende de cómo se' Está generando su JSON, pero parece que su biblioteca hace una introspección.

0

Sé que es tarde y se acepta la respuesta, pero de otra manera APP estándar es llamar al método size() en la lista que desea inicializar antes de devolver el objeto a partir de la DAO:

Object.getList().size(); 

Esto le ahorra tener que hacer trampa y usar un mecanismo de implementación específico para la inicialización

Cuestiones relacionadas