如何避免找到同一集合的两个表示

How can I avoid Found two representations of same collection

您好,我在测试期间和集成测试期间遇到了问题。

找到同一集合的两个表示:ClientPasswordPolicy.userCategoriesForProxyDuration;

在我的一个域中,我有以下内容:

Map<String, String> userCategoriesForProxyDuration

由 like 映射:

userCategoriesForProxyDuration joinTable: 

我的测试看起来像:

        Client client0 = Client.findByName('client0')
        UserCategory userCategory = UserCategory.build(value:'TEST_GUILHERME')

        Client client = Client.build(name: 'Monkey')
        ClientPasswordPolicy policy = ClientPasswordPolicy.build(client:client)

        client.save(flush:true)

        policy.userCategoriesForProxyDuration = ["TEST_GUILHERME":"36"]
        policy.addToUserCategoriesNeedApproval(userCategory)
        policy.proxyEnabled = true

        policy.save(flush:true,failOnError:true,insert:true)

        User user = User.build(username: "Test1", password: "password", client: client0)

        Team team = Team.build(name: 'myTeamMonkey', client: client, members: [user])

        ClientPasswordPolicy policy1 = ClientPasswordPolicy.build(client:Client.build(name:'Maria'),proxyApproverEmailAddress:'bai@asa.com')
        Client client1 = Client.findByName('Maria')
        Team team1 = Team.build(name: 'myTeamMaria1', client: client1, members: [user])

但是在我创建第二个策略的行中我收到了错误,我做了一些尝试,例如如果我喜欢:

     ClientPasswordPolicy.findAll()

第二次两次还是会报错,同样的错误。所以我担心我不知道为什么政策没有被冲入交易并且交易正在举行,这就是为什么我在保存后使用刷新,即使我正在使用构建来创建我的域。

我发现了一些事情,例如,在验证 ClientPasswordPolicy 期间,我们会做这样的事情:

 userCategoriesForProxyDuration nullable: true, validator: { approvals, object ->
        if(object.proxyEnabled && !approvals) {
            return ['invalid.proxy.user.category.required']
        }
        for (approval in approvals) {
            if (!(approval.key in UserCategory.list().value)) {
                 return ['invalid.proxy.approval.userType']
            }
            try {
                Integer.parseInt(approval.value)
            } catch (NumberFormatException e) {
                return ['invalid.proxy.approval.duration']
            }
        }

如果我注释掉不会有任何问题,我担心这个 UserCategory.list() 会引起麻烦,但我不确定该怎么做,我在保存期间尝试使用(validate:false) 无效。

我找到的解决方案是将所有内容保存并刷新到测试中,因为验证时检查数据库以进行验证并且会干扰休眠。