как я могу получить все идентификаторы сотрудника с тем же именем - PullRequest
0 голосов
/ 28 июня 2019

Я хочу написать запрос GORM, в котором может быть указан мой идентификатор всех сотрудников с таким же именем

Формат БД:

|id|Department|EMPLOYEE| DATE |
|01|   D01    |   A    |Date01|
|02|   D03    |   B    |Date03|
|03|   D02    |   B    |Date04|
|04|   D04    |   C    |Date05|
|05|   D05    |   A    |Date03|
|06|   D01    |   B    |Date02|
|07|   D02    |   A    |Date04|
|08|   D04    |   A    |Date05|
|09|   D04    |   C    |Date01|
|10|   D05    |   A    |Date02|

Результат должен быть как

|EMPLOYEE|       id       |
|   A    | 01,05,07,08,10 |
|   B    |    02,03,06    |
|   C    |      04,09     |

1 Ответ

0 голосов
/ 28 июня 2019

Столбец id является коллекцией, поэтому вместо него лучше назвать ids.

Обработка строки внутри строки с помощью sql не очень проста для понимания ваших коллег, и я бы использовал толькоэто, если вам нужно загрузить много данных и у вас могут возникнуть проблемы с производительностью.

Следовательно, я бы предложил простой findAllByEmployee запрос и group by Employee в вашем Java-коде.

Если вы хотите сэкономить пропускную способность и процессор из-за обезвоживания объекта, вы можете использовать критерий , чтобы загрузить только необходимые свойства:

def result = Empoloyee.createCriteria().list{
    projections {
        property 'id'
        property 'EMPOLYEE'
    }
    // Paging if needed
}

def empolyeeToIdsMap = result.groupBy {it.EMPLOYEE}

Отказ от ответственности: не пробовал код, может содержать ошибки.

...