2015-10-20 4 views
0

Ищу для облегчения Grails способа (если она существует), чтобы достигнуть ниже:Grails GORM найти по свойству объекта имущества

Моего домена UserIntegration.groovy класс:

class UserIntegration { 
User user 
Integration integration 
// rest of code 
} 

Моего Integration.groovy домена :

class Integration { 
SomeType type 
// rest of code 
} 

Мой SomeType.groovy домен:

class SomeType { 
String name 
// rest of code 
} 

Поэтому в основном то, что мне нужно, это способ, чтобы я мог найти UserIntegration, который имеет Integration с type.name = "someTypeName"

Другими словами, я ищу UserIntegration.findByIntegrationTypeName("someTypeName");

Очевидно, что такое динамический искатель не существует, но есть ли какой-нибудь более простой способ сделать это? В настоящее время я могу узнать все объекты интеграции с типом = «someTypeName», а затем использовать эту интеграцию в findAllByIntegration, но ищет более легкое решение, если оно существует, желательно динамический искатель.

+1

делает 'UserIntegration.where {integration.type.name == 'someTypeName'}' работу? –

+0

@tim_yates Да, это работает так, как ожидалось, поскольку это было на самом деле, используя критерии. Любой другой способ сделать это? – rahulserver

+0

Добавьте [named query] (https://grails.github.io/grails-doc/latest/ref/Domain%20Classes/namedQueries.html)? –

ответ

0

Вы также можете использовать HQL сделать то же самым

def list = UserIntegration.executeQuery(from UserIntegration userInt 
             inner join fetch userint.integration integration 
             inner join fetch integration.type sometype 
             where sometype.name =:name,[name:'someTypeName']) 
0
UserIntegration.createCriteria().list(max:1){ 
'integration'{ 
     'type'{ 
      eq('name',"someTypeName") 
     } 
    } 
} 

Надеется, что это работает

Смежные вопросы