如何使用 JPA 和 Hibernate 以多对多关系保存具有唯一字段的数据

bio*_*aks 5 java many-to-many hibernate

我是休眠的新手,我有下一个情况:

@Entity 
class Post {
    @Id id;

    @ManyToMany
    @JoinTable(name = "ATag", joinColumns = @JoinColumn(name = "post_id"),
        inverseJoinColumns = @JoinColumn(name = "tag_id"))
    Set<Tag> tags;
}

@Entity 
class Tag {
    @Id Long id;
    String name;
}
Run Code Online (Sandbox Code Playgroud)

表对字段tag有约束。如果我使用名称已经存在的标签保存帖子对象,它将返回如下错误:uniquename

Nov 25, 2014 9:23:13 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ERROR: duplicate key value violates unique constraint "tags_name_key"
  Detail: Key (name)=(ert) already exists.
org.hibernate.exception.ConstraintViolationException: could not execute statement
Run Code Online (Sandbox Code Playgroud)

我该如何处理这种情况?

bra*_*itz 0

由于您尝试保存的记录已经存在,因此您需要调用updatesaveOrUpdate ...但这取决于您首先尝试保存重复记录的原因?您是否正在尝试插入或只是更新现有记录?