Java Grails难以使用Hibernate OneToMany模型

Java Grails难以使用Hibernate OneToMany模型,java,hibernate,grails,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; /

在我的新项目中,我尝试使用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
    }

}
类用户{
//一些字段和getter setter
//有问题的事
@javax.persistence.OneToMany(mappedBy=“User”)
私有设置用户配置文件;
//盖特就像
公共集getProfile(){
//逻辑
}
公共void setProfile(){
//逻辑
}
}
所以当我尝试访问grails中的这个字段时

def criteria = User.createCriteria()
    List<User> userList = criteria.list() {
        userProfiles {
            eq("id",1 as long)
        }
    }
def-criteria=User.createCriteria()
List userList=criteria.List(){
用户配置文件{
等式(“id”,长度为1)
}
}
我得到的错误类似于
没有方法的签名:UserService.userProfiles()
。我认为这可能是因为不同的
getter
setter
名称,
OneToMany
字段的
标准运行良好


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

这是一种更常见的做法:

class User {
    static hasMany = [userProfiles: UserProfile]
}
自动生成方法,如
getUserProfiles()
setUserProfiles()
addToUserProfiles(UserProfile p)
等。看

然后你可以这样做:

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

我希望这会有所帮助。

可能与您的问题无关,但您的代码中有一些古怪的东西。你为什么不使用?您可能需要
Set
而不是
Set
,因为我假设类名是
UserProfile
。您有一个
setProfile()
方法返回一个
Set
,还有一个
setProfile()
方法返回
void
。不能仅通过更改返回类型来重载方法。我希望其中一个应该是
getProfile
,另一个可能应该接受
Set
作为参数。@杰夫·斯科特·布朗,我在
getter
setter
中犯了一个错误,请参见我的编辑,但这里我不能使用hasMany,因为我们应该使用
hibernate
模型“我不能使用hasMany,因为我们应该使用hibernate模型”-您可以在hibernate模型中使用
hasMany
。这很常见。@杰夫·斯科特·布朗,哦,谢谢您提供的新信息。无论如何,我们无法编辑该文件,我们只能使用现有的things@JeffScott Brown,他们是否有任何可能调用
getProfile的方法(){eq(“id”,1 as long)}
,我尝试了这个,它显示抛出
没有方法签名
例外你是对的,但我不能使用这个有很多东西,只是因为我们应该使用
Hibernate模型
“你是对的,但我不能使用这个有很多东西,只是因为我们应该使用Hibernate模型“-
有许多
可以与Hibernate模型一起使用。这是非常常见的。