2016-12-19 40 views
0

我想要使用Grails標準預測來獲得兩列的所有可能組合。Grails標準預測 - 通過兩個屬性的不同投影

我試試這個:

def criteria = { 
    projections{ 
     property('colA') 
     property('colB') 
    } 
} 

def allCombinations = MyDomainEntity.createCriteria().list(criteria) 

但是,該代碼返回可樂COLB的所有重複的組合。

我也嘗試使用distinct,但只適用於單列。

任何想法來解決這個問題?

謝謝!

回答

1

我不知道您嘗試解決的實際問題,但根據您所說的應該使用groupProperty

這裏是例如:

// Your domain class 
class TestEntity { 
    String field1 
    String field2 
} 

// test distinct projection 
class TestEntityTest extends GroovyTestCase { 

    void testDistinctByTwoColumns() { 
     new TestEntity(field1: 'test1', field2: 'test2').save() 
     new TestEntity(field1: 'test1', field2: 'test2').save() // duplicate 
     new TestEntity(field1: 'test1', field2: 'test2').save() // duplicate 
     new TestEntity(field1: 'test3', field2: 'test4').save() 
     final result = TestEntity.withCriteria { 
      projections { 
       groupProperty('field1') 
       groupProperty('field2') 
      } 
     } 
     assertEquals(2, result.size()) 
    } 
} 

P.S.我使用Grails 2.5.5進行測試。也許你的版本有點不同,但我希望這個想法很清楚。

+0

我試過了,它的工作原理,謝謝! – NachoB