Muhammad Imran Tariq
Muhammad Imran Tariq

Reputation: 23352

JPA with ORACLE insert null error

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

Answers (1)

Predrag Maric
Predrag Maric

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

Related Questions