A. java:
@Entity
public class A {
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Type(type = "uuid-char")
private UUID id;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "a_b",
joinColumns = @JoinColumn(name = "a_id"),
inverseJoinColumns = @JoinColumn(name = "b_id"))
public Set<B> bs;
...
}
B. java:
@Entity
public class B {
@Id
@NotNull
private String bId;
@ManyToMany(mappedBy = "bs")
private Set<A> as;
...
}
AService. java:
...
public void save(A a) {
aRepository.save(a);
}
...
Оба A и сущности B сохраняются, когда я создаю A, у которого есть набор B. Однако, он выдает ошибку во второй раз:
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "b_pkey"
Detail: Key (b_id)=(2) already exists.
То, что я пытаюсь сделать, это при создании сущности A (без с полями идентификатора, заполненными мной), который имеет набор B (с полями идентификатора, заполненными мной):
Создание B, если еще нет записи для B, и не создавать, если уже существует с данным id.
Как этого добиться?