Derby Auto-Increment and Eclipelink UnitOfWork

There seems to be a problem between the Eclipslink and Derby Auto-Icrement columns when I insert the value through UnitOfWork.

SessionFactory sessionFactory = new SessionFactory("default");
Session session = sessionFactory.getSharedSession();
UnitOfWork uow = session.acquireUnitOfWork();
SysUser usr2 = new SysUser();
usr2.setUserName("test");
usr2.setUserPassword("test");
uow.registerObject(usr2);
uow.commit();

This is where SQL Eclipselink is generated:

INSERT INTO APP.SYS_USER (DB_ID, CREATED, STATUS, USER_NAME, USER_PASSWORD) VALUES (?, ?, ?, ?, ?)  bind => [0, null, null, testinsert, test]

The result is in "Attempt to change identifier column" DB_ID "." An exception.

Here SQL, I want it to be generated:

INSERT INTO APP.SYS_USER (USER_NAME, USER_PASSWORD) VALUES ( ?, ?)  bind => [testinsert, test]

I tried INSERT INTO SYS_USER(USER_NAME, USER_PASSWORD) VALUES('tesetinsert2', 'test')and it works well.

Is there an xml file for the map file or something to solve this problem or can I configure Derby to skip this null value?

EDIT : here is the table:

CREATE TABLE SYS_USER ( 
  "DB_ID" INTEGER NOT NULL DEFAULT AUTOINCREMENT: start 1 increment 1 , 
  "USER_NAME" VARCHAR(64) NOT NULL , 
  "USER_PASSWORD" VARCHAR(64) NOT NULL , 
  "STATUS" VARCHAR(64) DEFAULT 'ACTIVE' , 
  "CREATED" TIMESTAMP DEFAULT current_timestamp 
  , CONSTRAINT "SQL110614114038650" PRIMARY KEY ( "DB_ID" ) );

EDIT : here is the Entity part:

@Table(name = "SYS_USER")
@Entity
public class SysUser implements Serializable {
  @Column(name = "DB_ID")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Id
  private int dbId;

The solution uses "Entity Manager" instead of "Unit of Work". UnitOfWork doesn't seem to support Derby Auto-increment columns.

, UnitOfWork. , - , , UnitOfWork .

+5
1

API- EclipseLink (UnitOfWork) , JPA Derby . , , , Derby .

+1

All Articles