2010-05-28 7 views
2

Comment puis-je obtenir Collection de classe spécifique?Classes de domaine d'héritage dans Grails

J'utilise inheriance: On Planet live Human. Les humains se divisent en hommes et en femmes.

class Planet{ 
    String name 
    static hasMany = [ humans : Human ] 
} 

class Human{ 
    String name 
    static belongsTo = [Planet] 
} 

class Man extends Human{ 
    int countOfCar 
} 

class Woman extends Human{ 
    int coutOfChildren 
} 

maintenant un NEET pour obtenir la seule collection de l'homme ou de la femme Collection:

obtenir tous les humains sur la planète est simple

all = Planet.get(1).humans 

mais ce que je peux obtenir seule femme ou les hommes?
womenLivedOnMars = Planet.get (1). getOnlyWoman
menLivedOnJupiter = Planet.get (2). getOnlyMan

Merci pour votre aide
Tom

Répondre

2

Une option simple pourrait être:

Man.findAllByPlanet(Planet.get(1)) 
2

Pour autant que je sais que vous pouvez le faire ces façons:

class Human{ 
    String name 
    static belongsTo = [planet: Planet] 
} 


womanLivedOnMars = Woman.findAllByPlanet(Planet.findByName('Mars')) 

menLivedOnJupiter = Men.withCriteria { 
    planet { 
     eq('name','Mars') 
    } 
} 
Questions connexes