У меня была БД с таблицами SPE C и PARTS. Также у меня была таблица для МНОГООБРАЗНЫХ отношений. В своем проекте я использовал шаблон Spring JDBS, и все работает хорошо. Затем я решаю изменить jdb c на данных SPring jpa. Мои объекты:
@Entity
@Table(name = "PARTS")
public class PartsJpa {
@Id
private int id;
@Column(name = "NAME")
private String name;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "ID_EXPORT", unique = false, nullable = false, updatable = true)
private ExportJpa exportJpa;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "ID_TYPE", unique = false, nullable = false, updatable = true)
private TypesJpa typesJpa;
@Column(name = "DESCRIPTION")
private String description;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name="SPEC_PARTS",
joinColumns = @JoinColumn(name="ID_SPEC", referencedColumnName="id"),
inverseJoinColumns = @JoinColumn(name="ID_PARTS", referencedColumnName="id")
)
private Set<SpecJpa> specJpa;
////////
}
И Spe c:
@Entity
@Table(name = "SPEC")
public class SpecJpa {
@Id
private int id;
@Column(name = "NAME")
private String name;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "Creator_ID", unique = false, nullable = false, updatable = true)
private UsersJpa usersJpa;
@Column(name = "DESCRIPTION")
private String description;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name="SPEC_PARTS",
joinColumns = @JoinColumn(name="ID_SPEC", referencedColumnName="id"),
inverseJoinColumns = @JoinColumn(name="ID_PARTS", referencedColumnName="id")
)
private Set<PartsJpa> partsJpa;
////////////////
}
Я не показываю геттеры и сеттеры. Это работает, но когда я запускаю программу, что-то в моей таблице изменилось, и теперь я не могу добавить в таблицу значения spec_parts, такие как (1,3) (1,2). Ошибка: FK_123: PUBLI C .SPEC_PARTS FOREIGN KEY (ID_PARTS) ССЫЛКИ PUBLI C .SPE C (ID) (3) "Нарушение ссылочной целостности:" FK_123: PUBLI C .SPEC_PARTS FOREIGN KEY (ID_PARTS) ССЫЛКИ PUBLI C .SPE C (ID) (3) "; SQL оператор: INSERT INTO" PUBLI C "." SPEC_PARTS "(" ID_SPE C ", "ID_PARTS") VALUES (?,?)
Возможно, у меня ошибка при создании отношений между spe c и деталями? В чем проблема?
data в spe c
ID NAME CREATOR_ID DESCRIPTION CHANGER_ID
1 pc 1 description 1
2 pc2 2 description2 2
данные по частям
ID ▼ NAME ID_EXPORT ID_TYPE DESCRIPTION
1 intel core i5 1 1 d1
2 intel core i7 1 1 d2
3 ddr3 2 2 d3
4 ddr4 2 2 d4
5 asus 3 3 d5
данные в spec_parts сейчас:
ID_SPEC ID_PARTS
1 1
2 2
, поэтому я не могу добавить 1,3 или 2,4
Я обнаружил проблему, дата весны что-то изменила и теперь в таблице SPEC_PARTS ID_SPE C отображается на PARTS.ID. Почему?