在我的新项目中,我尝试使用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()
之类的错误。我认为这可能是因为getter
和setter
名称不同,导致剩余的OneToMany
字段导致criteria
工作正常。
是否有任何可行且标准的方法来解决此问题。
答案 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
}
}
我希望有所帮助。