У меня есть две таблицы. Таблица A содержит первичный ключ, сгенерированный последовательностью. Таблица B предназначена для предоставления UUID для каждого первичного ключа, чтобы в таблице B была ровно одна запись, которая соответствует каждой записи в таблице A. У меня возникла эта проблема; однако, если в определенных обстоятельствах таблица B имеет 2 ссылки на одну запись из таблицы A. Следует отметить, что между этими двумя таблицами нет ограничений по внешнему ключу.
Duplication Example
TABLE_A TABLE_B
------------------ --------------------------------------------------
| MAIN_ID* | ... | | MAIN_ID | XREF_UID* |
| 1 |-----| | 1 | 58685ff9-4cee-426e-838f-fe44ab3696ed |
| 2 |-----| | 2 | 91d48161-9583-41a5-a34e-d51a63b0a250 |
------------------ | 2 | bf33f0ce-9a44-4b3f-aabe-0f63608f7d27 |
--------------------------------------------------
@Entity
@Table(name = "TABLE_A")
public class MainEntity {
@Id
@SequenceGenerator(name = "FOO_GENERATOR",
sequenceName = "FOO_SEQ_NR", allocationSize = 2)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "FOO_GENERATOR")
@Column(name = "MAIN_ID", unique = true, nullable = false)
private Long id;
@OneToOne(mappedBy = "main", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private XrefEntity xref;
}
@Entity
@Table(name = "TABLE_B")
public class XrefEntity {
@Id
@Column(name = "MAIN_ID", nullable = false)
private Long id;
@Column(name = "XREF_UID", nullable = false, length = 36)
private String uid;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "MAIN_ID")
@MapsId
private MainEntity main;
}
Учитывая данную конфигурацию , что может привести к тому, что в таблице B будут дубликаты?