2016-12-19 6 views
0

Grails Criteria Projectionsを使用して2つの列の可能な組み合わせをすべて取得したいとします。Grailsの基準の投影 - 2つのプロパティによる明確な投影

私はこれ試してみてください。

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

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

をしかし、そのコードはコーラCOLBのすべての繰り返しの組み合わせを返します。

また、distinctを使用しようとしましたが、1つの列に対してのみ動作します。

この問題を解決するための方法はありますか?

ありがとうございます!

答えて

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