2010-12-09 62 views

Répondre

0

Je ne sais pas à propos JDOQL, mais si vous voulez une liste où chaque entité existe la plus grande une fois dire que chaque élément de la liste est unique, alors vous pouvez faire ce qui suit:

Asume vous avez une classe type entit/modèle nous appelons Type, avec les attributs att1, attr2. Vous voulez avoir une liste d'éléments uniques basés sur un ou plusieurs des attributs, disons attr2.

vous pouvez utiliser la méthode suivante que je me suis adapté d'une bonne source sur la question:

 
def unique(seq, idfun=None): 
     ''' A function that returns a list of unique items in a very efficient manner 
     Refer to : http://www.peterbe.com/plog/uniqifiers-benchmark ''' 
     # order preserving 
     if idfun is None: 
       def idfun(x): return x 
     seen = {} 
     result = [] 
     for item in seq: 
       marker = idfun(item) 
       # in old Python versions: 
       # if seen.has_key(marker) 
       # but in new ones: 
       if marker in seen: continue 
       seen[marker] = 1 
       result.append(item) 
     return result 

la pour obtenir une liste des éléments uniques du type de type datastore basé sur attr2 que je pouvais faire quelque chose comme:

 
list = Type.all() 

unique_list = unique(list,lambda t: t.attr2) 

Espérons que cela aide parce que cela a été la meilleure méthode pour moi jusqu'ici.