【问题标题】:How to check the uniqueness of a record with the generated id?如何使用生成的 id 检查记录的唯一性?
【发布时间】:2020-04-11 22:19:28
【问题描述】:

我有一堂课:

@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);
    }
}

如您所见,生成了ID,但记录的唯一性必须通过其他字段进行检查。为此,我使用 HQL:

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

如何应用集合来检查记录的唯一性?

【问题讨论】:

    标签: java hibernate hashmap hql


    【解决方案1】:

    您可以在 passportname 两个字段上添加唯一约束。 为此,您可以在类定义上方添加这一行

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

    所以它会是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-06
      • 2014-06-13
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多