我怎样才能避免找到同一集合的两个表示

时间:2017-02-16 11:02:55

标签: hibernate grails gorm spock

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

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

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

Map<String, String> userCategoriesForProxyDuration

由map:

映射
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()
第二次

两次都会得到错误,同样的错误。因此我担心我不知道为什么策略没有被刷新到事务中并且事务处于保持状态,这就是为什么我在保存后使用flush,即使我使用构建来创建我的域。 / p>

我在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()导致麻烦,但我不知道该怎么做,我试图在保存期间使用(验证:false )将无法正常工作。

1 个答案:

答案 0 :(得分:0)

我找到的解决方案是保存并将所有内容刷新到测试中,因为检查数据库进行验证并且正在弄乱hibernate的验证。