Reputation: 23352
I have a JPA entity named "Service" having ID as primary key
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "NAME")
private String name;
When I am trying to persist this data through JPA persistence API
Service service = new Service("abcservice");
entityManager.persist(service);
I am getting error
cannot insert NULL into ("TESTUSER992"."SERVICE"."ID")
org.hibernate.exception.ConstraintViolationException: could not insert: [com.dto.Service]
I am using Oracle thin, sid:xe
Upvotes: 1
Views: 2763
Reputation: 24433
Oracle doesn't support auto generated column, like MySQL or Postgres. You will have to use sequence, or table for generating ids, or set one manually in your code.
Sequence example:
@Id
@GeneratedValue(generator="ServiceIdSeq", strategy=GenerationType.SEQUENCE)
@SequenceGenerator(name="ServiceIdSeq", sequenceName="SERVICE_ID_SEQ")
private long id;
Table example:
@Id
@GeneratedValue(generator="ServiceIdTab", strategy=GenerationType.TABLE)
@TableGenerator(name="ServiceIdTab", table="SEQUENCE_ID_GEN",
pkColumnName="ID_NAME", valueColumnName="ID_VAL",
pkColumnValue="SERVICE_GEN")
private long id;
UPDATE
Execute this in your database to create sequence:
CREATE SEQUENCE SERVICE_ID_SEQ INCREMENT BY 1;
Upvotes: 3