Непонимание о присоединении связанных предприятий с дополнительными условиями с GORM - PullRequest
0 голосов
/ 28 октября 2018

В нашем приложении все наши объекты легко удаляются путем установки deletedAt в качестве даты удаления.

В одном из случаев я пытаюсь запросить объект с одним из его отношений,но включайте только «не удаленные».

Объект, который я пытаюсь запросить: Goal:

class Goal extends AuditableEntity {

    String  title
    String  definition
    RrmGoalType goalType

    Project project

    static hasMany = [perceptions: Perception]

    static hasOne = [utilization: RrmUtilization]

    static mapping = {
        table 'rrm_goal'

        title column: 'title', type: 'text'
        definition type: 'text'
        goalType column: 'goal_type', enumType: 'string'

        perceptions sort: 'definition', order: 'asc'

        autoTimestamp true
    }

...
}

Где AuditableEntity:

abstract class AuditableEntity implements Serializable {

    Date dateCreated
    User createdBy
    Date lastUpdated
    User updatedBy
    Date deletedAt
    User deletedBy

    static constraints = {
        createdBy nullable: true
        updatedBy nullable: true
        deletedBy nullable: true
        dateCreated nullable: true
        lastUpdated nullable: true
        deletedAt nullable: true
    }
}

И мне нужно запросить его с прикрепленным perceptions.

Я пытаюсь использовать namedQuery следующим образом:

notDeletedByProjectIdAndIdAndProjectOwnerId { Long projectId, Long goalId, Long userId ->
            isNull 'deletedAt'

            eq 'id', goalId

            createAlias('perceptions', 'perceptions', JoinType.LEFT_OUTER_JOIN)

            isNull 'perceptions.deletedAt'

            project {
                eq 'id', projectId
                isNull 'deletedAt'

                owner {
                    eq 'id', userId
                }
            }
        }

Он выполняется, нопо какой-то причине он возвращает только один элемент из списка восприятий.

Что мне не хватает?

НЕКОТОРЫЙ ПРОГРЕСС

Я думаю, что яначинаю понимать механизм.Я получаю цель следующим образом:

Goal.notDeletedByProjectIdAndIdAndProjectOwnerId(projectId, goalId, userId).get()

И gorm возвращает мне первый результат из набора результатов, поэтому прикреплено только одно восприятие.

Как запросить объект Goalи получить все не удаленные восприятия (в одном запросе)?

Как правильно получить граф объектов из этого типа запроса?

Другой вопрос: можно ли настроитьстремитесь выбрать только не удаленные объекты (или что-то еще)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...