2013-07-03 10 views
0

Ce n'est pas un problème, c'est plus d'une sorte de "est-ce la bonne approche".Jouer jointures de cadre et le modèle

permet donc dire que j'ai un modèle comme celui-ci

class A extends Model{ 
    @OneToMany(cascade = CascadeType.ALL) 
    public B; 
} 

class B extends Model{ 

    String c; 
} 

Maintenant, je veux accéder à tous les objets de A qui ont une valeur particulière de c dans leurs objets B.

Alors dois-je:

  1. Obtenir tous les objets de B avec une certaine valeur c puis trouver correspondante A ce avec ces objets (si oui, comment, se confondre)
  2. Obtenir tous les objets de A avec find.all() puis regardez dans la liste (cela semble une mauvaise idée car il y aura une grande quantité de A et pas tellement de B).

Toute aide serait appréciée (oh et suppose que je l'ai écrit @Entity et @Required et tout le reste correctement)

Répondre

1

Option 1 est la bonne façon de procéder. Vous pouvez utiliser une requête telle que

A.find().where().eq("b.id", yourBId).findList(); 

Peut-être l'ajout d'un fetch (« b »), si elle n'est pas relevé automatiquement.

+0

Ceci fonctionne pour '@ OneToOne' mais pour une raison quelconque, quand j'utilise un' @ OneToMany', il échoue. Une idée pourquoi? – cjds

+0

Comment cela échoue-t-il? Qu'en est-il de l'extraction ajoutée, comme: A.find.fetch ("b"). Where(). Eq ("b.id", bId) .findList(); – Kayaman

Questions connexes