如何避免找到同一集合的两个表示
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) 无效。
我找到的解决方案是将所有内容保存并刷新到测试中,因为验证时检查数据库以进行验证并且会干扰休眠。
您好,我在测试期间和集成测试期间遇到了问题。
找到同一集合的两个表示: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) 无效。
我找到的解决方案是将所有内容保存并刷新到测试中,因为验证时检查数据库以进行验证并且会干扰休眠。