1

这是我的创建方法:

public Person create(Person person) {
    if (person.getId() != null) {
        throw new IllegalArgumentException("Person already has an id.");
    }
    if (person == null) {
        throw new IllegalArgumentException("Person is null.");
    }
    if (person.getUniqueNumber() == null) {
        throw new IllegalArgumentException("Unique number is null.");
    }
    if (person.getUniqueNumber().length() == 0) {
        throw new IllegalArgumentException("Incorrect unique number.");
    }
    entityManager.getTransaction().begin();
    entityManager.persist(person);
    entityManager.getTransaction().commit();
    return person;
}

这些是 Person 属性:

@Entity
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable=false, unique=true)
    private String uniqueNumber;
}

如何检查 create 方法中的 uniqueNumber 是否(如果没有两个人具有相同的唯一编号)?

4

1 回答 1

1

你应该要么

  1. 对数据库中的“唯一编号”列有唯一约束。这是最简单、最安全的方法。因为它将处理并发。如果您尝试插入具有与现有用户相同的唯一编号的另一个用户,则会引发异常。
  2. 在 create 方法内部有另一个 DAO 调用来检查是否已经存在具有相同唯一编号的用户。可能需要设置正确的事务隔离级别才能正常工作。

我建议采用第一种方法。

于 2013-10-10T11:54:33.170 回答