几天前我在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
答案 0 :(得分:0)
我遇到了同样的问题,我做了类似的事情:
def getResults (User user) {
UserRequest.createCriteria().list() {
eq("user", user)
request{
eq("type","Test")
}
}
}
编辑: 检查您的UserRequest域,您有:
Request request
static hasMany = [user: User, request: Request]
Request和UserRequest之间有一个1:1和1:N的关系,名称为“request”