2012-08-15 38 views
1

嗨我想通過特定的屬性查詢我的數據庫。我的數據庫中的多個條目可能具有相同的屬性值,但我希望它只返回具有該屬性的不同值的第一個條目。grails查詢不同條目

例如,如果我的域名有一個code屬性,則有可能是一個條目,其中"code" = "boy",並且有可能是另外一個地方"code" = "girl",有可能是又一個一個地方再次"code" = "boy"。我想查詢它,所以我得到的第一個條目"code" = "boy"和條目"code" = girl"但不是第三個條目,其中code再次等於boy

我能夠從使用這兩種createCriteria()namedQueries()但我不能夠得到整個對象的code只值數據庫中獲取的不同code值。我怎樣才能得到實際的物體?

+0

我想一個編號小填充對象數據,每個條目都有一個id屬性爲好,進入被分配的ID取決於將條目添加到數據庫的順序 – Ameya 2012-08-15 18:58:48

+0

hmmm您將logSql設置爲true? GORM使用額外的查詢來填充對象數據?如果是這樣,你可以將它分成兩個查詢。 1 - 獲得不同的代碼,2 - 通過較小的ID獲取對象數據,使用'min'。 – 2012-08-15 19:06:50

+0

@SérgioMichels什麼是logSql,是當你插入一個新的條目,它會自動獲得一個ID?你能否更詳細地解釋我如何使用'min'來獲取對象數據。 – Ameya 2012-08-15 19:10:45

回答

0

約我思考的時候,一種HQL查詢:

select d 
    from Domain d 
where d.id = (select min(d1.id) 
       from Domain d1 
       where d1.code = d.code) 
+0

這項工作非常感謝 – Ameya 2012-08-15 21:13:31