2009-10-20 5 views
0

J'ai inversé certaines tables db, et une interface de façade et une classe d'implémentation ont été créées. Je dois faire un refresh() sur une entité, mais EntityManager est privé à partir du reverse engineering, et je ne veux pas éditer une classe reverse engineering. Comment puis-je obtenir l'EntityManger pour pouvoir appeler refresh()?EntityManager refresh

Répondre

1

Si privé est votre seul obstacle et vous n'avez aucune autre solution raisonnable, essayez d'utiliser la réflexion?

Field entityManagerField = reverseEngineeredInstance.class.getField("entityManager"); 
entityManagerField.setAccessible(true); 
EntityManager entityManager = entityManagerField.get(reverseEngineeredInstance); 

Et voilà votre EntityManager. Naturellement, je ne recommanderais pas d'utiliser la réflexion dans le code de production, mais si c'est ça ou rien, alors allez-y.

Questions connexes