Open Motta-Felipe opened 1 year ago
When inserting a new row of job instance, jberet relies on the database to generate the primary key (jobinstanceid), as you can see from the statement:
INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(?, ?)
With Oracle db, jberet uses a trigger to achieve that:
FOR EACH ROW
BEGIN
SELECT JOB_INSTANCE_SEQ.nextval INTO :new.JOBINSTANCEID FROM dual;
END;
Not sure why oracle still sees null jobinstanceid. It should've been generated by the above trigger.
Have you tried an older version of Oracle db?
Yes, I also tried with Oracle DB version 18, and it didn't work either.
I discovered that the jberet oracle DLL is generating tables and sequences, but for some reason, it's not generating the triggers. So I manually compiled the triggers (found here), and now everything is working fine!
Thanks, @chengfang!
Everything runs okay when I use the default "in-memory" repository or when I use the MySQL repository. However, when I try to use the Oracle repository, even though the tables used by Jberet are correctly generated (DDL), I encounter this error when I execute a job.
Caused by: Error : 1400, Position : 0, SQL = INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(:1 , :2 ) RETURNING JOBINSTANCEID INTO :3 [SQL INCLUDES EXPRESSIONS ADDED BY THE ORACLE JDBC DRIVER], Original SQL = INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(?, ?) RETURNING JOBINSTANCEID INTO ?, Error Message = ORA-01400: impossible to insert NULL in ("TASK_USER"."JOB_INSTANCE"."JOBINSTANCEID")
It's look like It's trying to save a Job with JOBINSTANCEID null.
Environment: Wildfly 27.0.1.Final Jakarta 10 API DB: Oracle DB 21cXE
Configuration in standalone-full.xml : Repository configuration
DataSource configuration
complete error stack trace
Am I missing anything?