2016-09-23 5 views
0

У меня есть класс домена:Grails 3 - findAllBy с присоединиться к

class Owner { 
    Integer ownerType 
    Prop propertyToJoinSometimes 

    static constraints = { 
     propertyToJoinSometimes nullable: true 
    } 
} 

Я обычно не нужно загружать propertyToJoinSometimes При загрузке владельца, но я иногда нагрузить много владельца объектов одновременно, используя findAllBy и присоединиться может сохранить большое количество вызовов в базе данных. Есть ли способ сделать что-то вроде:

Owner.findAllByOwnerType(2, [propertyToJoinSometimes: [fetch: 'join']]) 
+0

вы используете все от propertyToJoinSometimes или вы затем использовать биты от владельца и биты от propertyToJoinSometimes сделать вашу презентацию? Причина, о которой я прошу - вы можете обратиться к более раннему ответу здесь http://stackoverflow.com/questions/38363404/grails-3-return-list-in-query-result-from-hql-query/38393443#38393443 – Vahid

+0

haha ​​haha именно вы задали вопрос – Vahid

ответ

0

Это не совсем то, что вы ищете (не используя динамический искатель findAllBy), но он дает результаты вы после этого. Документация grails для createCriteria/withCriteria не упоминает об этом, но есть метод fetchMode в пределах HibernateCriteriaBuilder.

import org.hibernate.FetchMode 

Owner.withCriteria { 
    eq('ownerType', 2) 
    fetchMode('propertyToJoinSometimes', FetchMode.JOIN) 
} 
0

Просто добавить опцию с помощью динамического искателя:

Owner.findAllByOwnerType(2, [fetch: ['propertyToJoinSometimes': 'eager']])