gpt4 book ai didi

java - Bean 验证 + 数据库访问 + 断言

转载 作者:行者123 更新时间:2023-11-30 02:09:17 24 4
gpt4 key购买 nike

我对某种情况感到困惑。想象一下像 Person 这样的类:

@Entity
class Person {
@NotBlank(message="Some message")
@Column(name="ssn", nullable=false, unique=true)
String ssn;
...
}

好吧,ssn 必须是唯一的,我可以通过使用 unique=true 语句来做到这一点,但为了向用户显示一些消息,断言将是不错:

@AssertTrue(message="SSN is already in use.")
public boolean isSsnAvailable() {
// database query
}

你们认为这是一个好的做法吗?对我来说有点奇怪,因为通过添加数据库访问该实体似乎变得过于复杂。

我想到了另外两种可能性:

  1. 使用 @Unique 等注释创建自定义 validator 。
  2. 创建一个名为 ssnAvailable 的 transient 属性,该属性将由 PersonService 填充。

最佳答案

尝试在领域中思考Person 是否负责检查其某个属性在所有 Person 中是否唯一?不,它不是,也不应该具备这样做的能力。

这就是服务通常的用途。运行搜索具有特定 SSN 的人员的查询是完全有效的。在 PersonService 中,签名可能如下所示:

 public boolean isSsnPresent(String ssn)

如果您想在尝试将人员保存到数据库之前检查 SSN 是否存在,那么唯一约束对您没有帮助。

关于java - Bean 验证 + 数据库访问 + 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50556868/

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