JPA одна последовательность и два приложения - PullRequest
0 голосов
/ 08 ноября 2018

Я новичок в 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.

Как мне справиться с этой ситуацией?

Спасибо

...