2016-12-19 11 views
0

Я хочу получить все возможные комбинации из двух столбцов с использованием прогнозов кризисов 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