2010-12-09 59 views
0

在我的GAE應用程序中,我想創建一個JDOQL,它返回一個List,其中每個元素至多存在一次,即使在數據庫中還有更多。我怎樣才能做到這一點?使用JDOQL唯一結果集的查詢

回答

0

我不知道關於JDOQL,但如果你想在那裏每一個實體存在的最大的一次,即每個列表元素是唯一的一個列表,那麼你可以做到以下幾點:

Asume你有一個entit類型/型號類我們稱之爲Type,屬性att1,attr2。 你想擁有一個基於一個或多個屬性的獨特元素列表,比如attr2。

,你可以用下面的方法,我改編自對這個問題的一個好來源:

 
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 

的基礎上attR2位,我可以做的就是從數據存儲類型類型獨特元素的列表如:

 
list = Type.all() 

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

希望這可以幫助,因爲它一直是我迄今爲止最好的方法。