查询grails中的两个表

时间:2013-09-10 21:50:15

标签: mysql grails gorm

我的grails项目中有两个域类。第一个是用户,第二个是联系人。用户与联系人类有一对多的关系,即一个用户有很多联系人。用户类就像这样

package contacts

class User {
    String name
    String email
    String password

    static constraints = {
        name(nullable: false)
        email(nullable: false,email: true,blank: false )
        password(nullable: false,size: 6..8,blank: false,password:true)
    }
    static hasMany = [contacts: Contact]

    String toString(){
        return name
    }
}

,联系类就像这样

package contacts

class Contact {
    String firstName
    String lastName
    String email
    String phone
    String address
    Date dateCreated

    static constraints = {

        firstName(nullable: false)
        lastName(nullable: true)
        email(nullable: false)
        phone(nullable: true)
        address(nullable: true)
        dateCreated()
    }
       static belongsTo = [user: User]

}

当我编译它时,它创建两个名为user和contact的表,联系表将user_id作为用户表中的外键,在用户表中称为id。现在我想要检索某个特定用户的所有联系人。我想知道如何做到这一点。我尝试过不同的动态查询方法,但都失败了。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

只要您拥有User对象,就可以这样简单:

def contacts = user.contacts

如果将userId传递给某些服务以检索它们,您可以执行以下操作:

def getUserContacts(Long userId) {
  def user = User.load(userId)
  def contacts = Contact.findAllByUser(user)
}