0

我需要对表使用 GenerationType.sequence 策略,我在类中编写了以下注释:

@Id
@SequenceGenerator(name="SEQ_PERFIL", sequenceName="SEQ_PERFIL",allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_PERFIL")
@Column(name="PER_CODPERFIL", nullable = false)
private long perCodperfil;

要插入,我使用以下代码:

entityManager.getTransaction().begin();
entityManager.persist(entity);
entityManager.flush();
entityManager.refresh(entity);
entityManager.getTransaction().commit();

当我插入序列时递增(我在数据库中显示),但插入失败,因为主键为空

It said :
Error Code: 1400
Call: INSERT INTO PERFIL (PER_CODPERFIL) VALUES (?) bind => [1 parameters bound]
Query: InsertObjectQuery(24)

它说 PER_CODPERFIL 为空 我使用 Eclipse-link 和 Oracle DB

eclipse链接记录的句子是:

15:05:36,651 INFO    [EclipseLog] SELECT SEQ_SIAC_PERFIL.NEXTVAL FROM DUAL   
15:05:36,761 INFO    [EclipseLog] INSERT INTO PERFIL (PER_CODPERFIL) VALUES (?) bind => [null]
15:05:36,773 INFO    [EclipseLog] SELECT 1 FROM DUAL
4

0 回答 0