2015-02-10 4 views
0

Я новичок в Grails. У меня возникла проблема с извлечением данных из БД. У меня есть домены с классами, что-то вроде ...Grails - findВсе соединение двух таблиц

class Lightbox {  
    String name = '' 
    String link = '' 
    static hasMany = [users: LightboxUserAccount] 
} 

class LightboxUserAccount { 
    UserAccount userAccount 
    static belongsTo = [lightbox: Lightbox] 
} 

class UserAccount { 
    String username 
    ... 
} 

Я хочу, чтобы перечислить все «лайтбоксов», принадлежащий пользователю с ID = 4. Я пытался

def my_lb = Lightbox.findAll("from Lightbox as lb where lb.users=:userAccount", [userAccount: springSecurityService.getCurrentUser()]) 

или

def my_lb = Lightbox.findAllByUsers(4) 

Ни одна из этих работ для меня. Что я делаю не так? Thx

+0

'from Lightbox as lb где lb.users.userAccount =: userAccount'? – cfrick

ответ

0

Так что я сделал это немного отличается, используя критерии вместо этого. Взгляните, если заинтересованы

static getAllByUserAccount(UserAccount userAccount) { 
    def criteria = Lightbox.createCriteria() 
    def my_lb = criteria.list { 
     users { 
      eq('userAccount', userAccount) 
     } 
    } 
    return my_lb 
} 

Кажется, что это работает. Спасибо за ответы, хотя

0

Попробуйте это:

Lightbox.findAll("from Lightbox as lb where :userAccount in (lb.users)", [userAccount: springSecurityService.getCurrentUser()]) 
Смежные вопросы