2010-10-28 38 views
0

我正在Google App Engine上運行應用程序,並且在使用JDO獲取數據時遇到問題。我有班消息,其中有屬性private List<String> labels;。現在我想有一些搜索功能,它將一個字符串(標籤)作爲參數,並搜索所有消息以獲得具有給定標籤的消息。問題是與JDO查詢,現在我有這個 (字符串this.label的搜索參數):JDO + GoogleAppEngine - 按集合中的值搜索類

String query = "select from " + Message.class.getName() + " where (labels.contains('" + this.label + "')) "; 

它可以在本地主機上,而不是在GAE(返回NULL)。另一個(幼稚)的嘗試是

query = "select from " + Note.class.getName() + " where labels=='" + this.label + "'"; 

而且這也只工作在本地主機上,而不是GAE

有誰有一個想法如何做到這一點?感謝您的任何幫助

+0

不知道爲什麼事情做或不工作,而只是說,第二個是無效的JDOQL最好忘記那個。是的GAE/J人可能會說他們支持它,但這是對JDO規範的顛覆。 Collection.contains()是一個有效的方法調用 – DataNucleus 2010-10-29 06:36:24

回答

0

基本上你的說法是錯誤的。它應該是這樣的:

查詢字符串= 「SELECT FROM」 + Message.class.getName()+ 「WHERE labels.contains(I)& & i.label == labelParam」 + 「變量」 + Labels.class.getName()+「我」 + 「參數java.lang.String中labelParam」

好運