2017-06-01 3 views
0

Je me bats pour mapper un objet imbriqué. Je veux mapper le champ objet au champ de cet objet enfant. par exemple j'ai ces classes.Mappage du bulldozer du champ parent au champ imbriqué/enfant

class Parent { 
    private Child child; 
    private Long childId; 

    // setter - getter 
} 

class Child { 
    private Long id; 

    // setter - getter 
} 

et ma cartographie est:

</mappings> 
<configuration> 
    <map-null>false</map-null> 
</configuration> 
<mapping> 
    <class-a>com.indraep.Parent</class-a> 
    <class-b>com.indraep.Parent</class-b> 

    <field> 
     <a>childId</a> 
     <b>child.id</b> 
    </field> 
</mapping> 
</mappings> 

Par cette configuration, je ne peux pas la carte Parent.childId à Parent.child.id.

Cependant, il fonctionne si je tente la carte en face de Parent.child.id à Parent.childId en utilisant cette application:

<field> 
    <a>childId</a> 
    <b>child.id</b> 
</field> 

Toute idée comment résoudre ce problème? ou il n'est pas possible de le faire avec un bouteur?

Répondre

0

J'ai trouvé une solution en ajoutant ce champ config ne comprennent pas:

<field-exclude> 
    <a>child</a> 
    <b>child</b> 
</field-exclude> 

du journal, il semble dresser la carte bulldozer Parent.childId -> Parent.child.id, mais à l'étape suivante, il obtient override par Parent.child -> Parent.child afin que Parent.child devienne null. Un autre problème est que si la classe enfant a d'autres champs et que j'ai besoin de le mapper aussi (sauf child.id qui est mappé depuis Parent.childId), comment résoudre ce problème?