gpt4 book ai didi

mongodb - grails mongodb 3.0.2插件使用createCriteria()对关联进行联接查询

转载 作者:行者123 更新时间:2023-12-02 14:42:45 25 4
gpt4 key购买 nike

我正在尝试使用createCriteria()搜索具有特定角色的用户。我有三个域类:User,Role和UserRole(它们来自SpringSecurity)。

class UserRole implements Serializable {

User user
Role role

static constraints = {
user nullbale: false
role nullable: false
}

static mapping = {
version: false
id composite: ['role', 'user']
}
}

我正在用户域上的isActive,名称或用户名字段以及角色域上的权限字段中搜索。
    def c = UserRole.createCriteria()
def results = c {
user {
eq("isActive", true)
or {
ilike("name", "somename")
ilike("username", "someusername")
}
}
role {
eq("authority", "ROLE_USER")
}
}

运行此程序时,我从mongo插件获取UnsupportedOperationException。这是stacktrace
ERROR errors.GrailsExceptionResolver  - UnsupportedOperationException occurred when processing request: [GET] /users/search - parameters:
query:
Join queries are not supported by MongoDB. Stacktrace follows:
Message: Join queries are not supported by MongoDB
Line | Method
->> 162 | handle in org.grails.datastore.mapping.mongo.query.MongoQuery$2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 142 | handle in ''
| 1091 | populateMongoQuery in org.grails.datastore.mapping.mongo.query.MongoQuery
| 993 | executeQuery in org.grails.datastore.mapping.mongo.query.MongoQuery$58
| 861 | doInDB . . . . . . in ''
| 833 | doInDB in ''
| 542 | list . . . . . . . in org.grails.datastore.mapping.query.Query
| 325 | invokeMethod in grails.gorm.CriteriaBuilder
| 17 | $tt__searchUsers . in com.themopi.apis.searchactivity.SearchService
| 29 | searchUser in com.themopi.apis.search.SearchController
| 198 | doFilter . . . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 106 | processFilterChain in com.odobo.grails.plugin.springsecurity.rest.RestTokenValidationFilter
| 72 | doFilter in ''
| 53 | doFilter . . . . . in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread

我在此问题上找到了 Jira,但尚未解决。

到目前为止,jira是在2012年3月9日创建的,因此目前尚无任何解决方法,或者我错过了一些东西?

我将在此查询中使用分页和投影吗?

任何帮助或指导都将受到高度赞赏。

提前致谢。

最佳答案

这个主题上有一个很棒的article from Burt

它的主要部分之一是,应使用embedded/sub-doc entities实现安全模型。实际上,联接根本不应该与mongo一起使用,如果需要,请使用RDBMS或Graph DB。

关于mongodb - grails mongodb 3.0.2插件使用createCriteria()对关联进行联接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25929034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com