gpt4 book ai didi

hibernate - 如何在Grails中使用自定义 validator 正确检查字段唯一性?

转载 作者:行者123 更新时间:2023-12-02 15:35:18 24 4
gpt4 key购买 nike

我有一个ClientAttribute域类,其中包含2个字段:name (String)project (Project)
单个项目中的ProjectClientAttribute之间存在一对多的关系,所有名称必须唯一。

起初,我考虑过创建以下验证器:

name(blank: false, validator: { val, obj ->
if (ClientAttribute.findByProjectAndName(obj.project, val)) return ['clientAttribute.name.unique']
})

不幸的是,当创建新的 ClientAttribute实例时,我通过将新实例添加到项目实例上的 clientAttributes字段并保存项目实例来做到这一点。依次将其余对象保存在 clientAttributes集中。当将第二个对象保存到集合中时,验证器将被触发,并抛出一个错误,因为 findBy()方法返回了相同的对象。

我想知道,执行这种检查的正确方法是什么?
我可以修改查询,使其不返回与当前保存的对象相同的对象,但是我想知道是否没有更简单的解决方案来解决我的问题?

谢谢

最佳答案

也许我不了解您的域模型,但是是什么导致您无法在项目和名称的ClientAttribute中使用Grails Unique Constraint?像这样:

name blank: false, unique: 'project'

关于hibernate - 如何在Grails中使用自定义 validator 正确检查字段唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359585/

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