Я новичок в JPA, и у меня возникает следующая проблема.
У меня есть эта таблица:
CREATE TABLE `email` (
`Id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`IdComunicazione` VARCHAR(255) NOT NULL COMMENT 'Id della comunicazione',
`Canale` VARCHAR(3) NOT NULL DEFAULT 'PEO' COMMENT 'Canale di posta tramite cui inviare il messaggio: PEO o PEC',
`TipoEmail` VARCHAR(50) NOT NULL COMMENT 'Tipologia del messaggio.',
`Destinatario` VARCHAR(45) NOT NULL COMMENT 'Destinatario del messaggio.',
`StatoMessaggio` INT(11) NOT NULL DEFAULT '0' COMMENT 'Stato di elaborazione del messaggio: 0 = da inviare, 1 = inviato.',
`DataInserimento` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Data in cui il messaggio e\' stato inserito in tabella.',
`DataInvio` TIMESTAMP NULL DEFAULT NULL COMMENT 'Data in cui il messaggio e\' stato inviato.',
`Log` VARCHAR(1000) NULL DEFAULT NULL COMMENT 'Log di errore',
PRIMARY KEY (`Id`))
эта таблица содержит MAIL_SEQ
:
CREATE TABLE `sequence` (
`SEQ_NAME` VARCHAR(255) NOT NULL,
`SEQ_COUNT` BIGINT(20) NULL DEFAULT NULL,
PRIMARY KEY (`SEQ_NAME`)
)
веб-приложение, которое использует Spring Data с сущностью:
@Entity
@Table(name = "email")
public class EmailModel {
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="MAIL_SEQ")
@TableGenerator(name="MAIL_SEQ", table="SEQUENCE", pkColumnName="SEQ_NAME", valueColumnName="SEQ_COUNT", pkColumnValue="MAIL_SEQ", allocationSize=1)
private long id;
...
}
и пакет, который использует EclipseLink с сущностью:
@Entity
public class Email implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="MAIL_SEQ")
@TableGenerator(name="MAIL_SEQ", allocationSize=1)
private String id;
....
}
Теперь веб-приложение вставляет первую строку (SEQ_COUNT = 1).
Пакет вставляет второй ряд (SEQ_COUNT = 2).
Когда я пытаюсь снова вставить веб-приложение, я получаю
Duplicate entry '2' for key 'PRIMARY'
и SEQ_COUNT
по-прежнему 2.
Как мне справиться с этой ситуацией?
Спасибо