Grails很难使用Hibernate OneToMany模型

时间:2014-09-12 16:03:19

标签: java hibernate grails

在我的新项目中,我尝试使用Hibernate模型类,这里有一个user域类,OneToMany关系userProfile就像

class User {
    //Some fields and getter setter

    //Problematic thing
    @javax.persistence.OneToMany(mappedBy = "User")
    private Set<UserProfile> userProfiles;

    //getter is like
    public Set<userProfile> getProfile() {
       // the logic
    }
    public void setProfile() {
       // the logic
    }

}

因此,当我尝试使用grails标准(如

)访问此字段时
def criteria = User.createCriteria()
    List<User> userList = criteria.list() {
        userProfiles {
            eq("id",1 as long)
        }
    }

我收到No signature of method: UserService.userProfiles()之类的错误。我认为这可能是因为gettersetter名称不同,导致剩余的OneToMany字段导致criteria工作正常。

是否有任何可行且标准的方法来解决此问题。

1 个答案:

答案 0 :(得分:0)

这是更常见的事情:

class User {
    static hasMany = [userProfiles: UserProfile]
}

自动生成getUserProfiles()setUserProfiles()addToUserProfiles(UserProfile p)等方法。请参阅http://grails.org/doc/latest/ref/Domain%20Classes/hasMany.html

然后你可以这样做:

def userList = User.withCriteria {
    userProfiles {
        idEq 1
    }
}

我希望有所帮助。