Как проверить уникальность записи с созданным идентификатором? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть класс:

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String name;
    private int passport;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof User)) return false;
        User user = (User) o;
        return passport == user.passport &&
                Objects.equals(name, user.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, passport);
    }
}

Как видите, идентификатор генерируется, но уникальность записи должна проверяться другими полями. Для этого я использую HQL:

Query query = session.createQuery("from Pilot where name:=name and passport=:passport");

Как применить коллекции для проверки уникальности записи?

1 Ответ

3 голосов
/ 12 апреля 2020

Вы можете добавить уникальное ограничение для обоих полей passport и name. Для этого вы можете просто добавить эту строку над определением класса

@Table(name = "USER", uniqueConstraints = { @UniqueConstraint(columnNames = { "name", "passport" }) })

Так будет выглядеть так:

@Entity
@Table(name = "USER", uniqueConstraints = { @UniqueConstraint(columnNames = { "name", "passport" }) })
public class User {
...
...