Java Grails难以使用Hibernate OneToMany模型
在我的新项目中,我尝试使用Hibernate模型类,这里有一个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; /
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模型一起使用。这是非常常见的。