几天前我问了一个问题h ow to convert a HQL query to Criteria
我进行转换的动机是,我想根据用户的输入来过滤结果,而HQL中的代码确实很麻烦。标准似乎是最合适的。但是,我无法使用createAlias
。
使用createAlias
时,我不断收到错误消息。
这是我的域类:
class User {
String username
String password
}
class Request {
String type
}
class UserRequest implements Serializable{
User user
Request request
static mapping = {
id composite: ['user', 'request']
version false
}
//equals & hashcode
static UserRequest create (User user, Request request, boolean flush = true) {
def d = new UserRequest (user: user, request: request)
d.save(flush: flush)
}
static constraints = {
}
}
这是我使用
createAlias
的方式 def getResults (User user) {
UserRequest.createCriteria().list() {
createAlias("request","req")
eq("user", user)
eq("req.type","Test")
}
}
完整的示例在GitHub上显示了问题:https://github.com/Omnipresent/createAliasTest
最佳答案
我有同样的问题,我做了这样的事情:
def getResults (User user) {
UserRequest.createCriteria().list() {
eq("user", user)
request{
eq("type","Test")
}
}
}
编辑:
检查您的UserRequest域,您有:
Request request
static hasMany = [user: User, request: Request]
您具有相同名称“request”的Request和UserRequest之间的1:1和1:N关系