2010-11-03 15 views
2

J'ai une classe de domaine de rôle, que j'ai simplifié pour illustrer le cas ici:marshalling JAXB ne retournera pas certaines valeurs pour ces domaines objets

@XmlRootElement(name="Role") 
@XmlAccessorType(XmlAccessType.NONE) 
public class Role implements Comparable 
{ 
    @XmlElement 
    String title = "" 
} 

J'ai un code pour tester marshalling cette classe de domaine qui est :

try { 
     employee.getProjects().each{ proj -> 
      println "Project name :" + proj.name 
      proj.getRoles().each{ 

       println ("Role title:" + it.title) 
       context = JAXBContext.newInstance(Role.class); 
       Marshaller m = context.createMarshaller(); 
       m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
       m.marshal ((Role)it, System.out) 

      } 
     } 

    }catch (JAXBException e){ 
     e.printStackTrace(); 
     println(e.getCause()) 
     println ("Ever getting here?") 
    } 

Comme vous pouvez le voir, j'ai d'autres classes où cela vient, les employés des projets hasMany, rôles hasMany du projet

quand je lance cette méthode, je reçois t il suit:

Project name :Project 1 
Role title:Software Engineer1 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Role> 
    <title></title> 
</Role> 
Project name :Project 2 
Role title:Software Engineer2 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Role> 
    <title></title> 
</Role> 
Project name :Project 3 
Role title:Software Engineer3 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Role> 
    <title>Software Engineer3</title> 
</Role> 

Que se passe-t-il ici? Cela me rend fou qu'il sait clairement être le titre de marshalling, et les valeurs sont là - je peux les IMPRIMER mais ils ne sont pas apparents avec le XML

Répondre

2

Il semblerait que ce soit un problème de chargement paresseux hibernate. J'essaie de comprendre comment désactiver le chargement paresseux pour l'ensemble de mon projet dans la configuration des grappes d'hibernation. Sauf cela, il semble que je devrais être capable de contourner le problème en utilisant des getters/setters explicites, mais ce n'est pas très groovy.