テーブルに 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();
シーケンスを挿入するとインクリメントされますが(データベースでそれを示しています)、主キーがnullであるため、挿入は失敗します
It said :
Error Code: 1400
Call: INSERT INTO PERFIL (PER_CODPERFIL) VALUES (?) bind => [1 parameters bound]
Query: InsertObjectQuery(24)
PER_CODPERFIL が null であると言われました。Eclipse リンクと Oracle DB を使用します。
日食リンクによって記録された文は次のとおりです。
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