У меня проблемы и надеюсь, что вы мне поможете, у меня есть следующая сущность:
Класс приложения:
@Entity
@Table(name = "apps")
public class App {
@Id
@Column(length = 15)
private String name;
@Column(length = 40)
private String web;
@Column(length = 50)
private String mailDomain;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "app")
private List<SocialNetwork> socialNetworks = new ArrayList<>();
//getters, setters, equals and hash
Класс социальной сети:
@Entity
@Table(name = "social_networks")
@IdClass(SocialNetworkCompositeKey.class)
public class SocialNetwork {
@Id
@Column(length = 15)
private String name;
@Id
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "app")
private App app;
@Column(nullable = false, length = 40)
private String url;
//getters, setters, equals and hash
SocialNetworkCompositeKey Класс:
public class SocialNetworkCompositeKey implements Serializable {
private String name;
private String app;
//equals and hash
Теперь, когда я пытаюсь вставить приложение в свою программу или непосредственно в БД, я получаю исключение:
Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "uk_590itpuvpqppd9f0g2w5y8bml"
Detail: Key (app)=(Uli App) already exists.
Это при попытке вставить 2 записи с:
app name url
----+---------+-----------+---------
1 | Uli App | Twitter | http...
----+---------+-----------+---------
2 | Uli App | Linkedin | http...
----+---------+-----------+---------
Я использую последнюю версию Spring boot и JPA. Поэтому я использую JpaRepository
для своих репозиториев. Даже если я попытаюсь ввести эти строки вручную в БД с помощью pgAdmin, это выдаст мне ту же ошибку.
Я не уверен, связано ли это, но я использую ddl-auto: update
из спящего режима для автоматического создания таблиц.
Надеюсь, вы, ребята, можете мне помочь, ура.