2010-06-02 3 views
3

J'ai rencontré plusieurs cas où les frameworks qui prennent des POJO pour faire un travail de crap-out avec des beans Hibernate mandatés.Hibernate Le chargement du proxy paresseux n'est pas compatible avec les autres frameworks

Par exemple, si je xml annoter un haricot pour cadre X et le transmettre à cadre X, il ne reconnaît pas le haricot, car il est passé l'objet approximé - qui n'a pas d'annotations pour cadre X.

est-il une solution commune à cela? Je préférerais ne pas définir le bean comme étant chargé, ou le chargement paresseux n'importe où dans l'application.

Répondre

5

Vous pouvez unproxy l'objet avant de passer autour de:

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; 
} 
+0

Merci. Je suppose que la meilleure solution consiste à insérer ce code dans un intercepteur avant que le framework ne l'obtienne. – bowsie

+0

Réutilisé, donc obligatoire +1 –

Questions connexes