我是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的Web应用程序:
@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;
....
}
现在,Web应用程序将插入第一行(SEQ_COUNT = 1)。
该批处理插入第二行(SEQ_COUNT = 2)。
当我尝试通过Web应用程序再次插入时
Duplicate entry '2' for key 'PRIMARY'
并且SEQ_COUNT
仍为2。
如何处理这种情况?
谢谢