2014-08-27 60 views
1

我與gorms戰鬥了一下:Grails的GORMS找到所有地方集合屬性不爲空

String data = new JSON(Object.executeQuery("from Product p where p.subis not empty")) 

工作就好

但是:

String data = new JSON(Product.findAllBySubIsNotEmpty()) 

不起作用。錯誤

No signature of method: com.path.Object.findAllBySubIsNotEmpty() is applicable for argument types:() values: [] 

爲清潔代碼的目的我寧願gorms語法到hql查詢,爲什麼這不會工作的任何想法?

+0

也許你的意思是'findAllBySubIsNotNull'? – rmlan 2014-08-27 16:31:12

回答

2

It seems您無法使用動態查找程序(findAllBy*)查詢具有非空集合的對象。您可以使用withCriteria,而不是做:

Product.withCriteria { 
    isNotEmpty("sub") 
} 

它使用Hibernate的標準API,這是一個有點比動態查找功能更強大。 Grails documentation對此非常全面。

2

以下findAllBy查詢應該工作:

Product.findAllBySubIsNotNull() 

您也可以使用一個where query

Product.where { sub.isEmpty() == false } 
+0

isnotnull會拋出與isnotempty悲傷:)的相同錯誤 – 2014-08-28 06:51:08

+0

我測試了它,它在Grails 2.4中工作。 – Casey 2014-08-28 14:56:10

0

您可以使用其中的查詢這樣

Product.where { 
    sub.size() > 0 
} 

'=='在那裏查詢相當於sizeGt標準

相關問題