There seems to be a logical inconsistency here
Lets say we need to generate a report. Now the report_id is stored but we need a status ID.
But to get a new status we need to specify a report. Since the report is not created the status can't be created and vice versa.
I'm assuming there are a limited number of status's so lets store them in a table called STATUS
REPORT
REPORT_ID
CURRENT_STATUS_ID
REPORT_STATUS
STATUS_ID
REPORT_ID
STATUS
STATUS_ID
First create a new report and attach an object of status to it.
Then create an object of REPORT_STATUS
Just in case you've set a cascade type remove it. Hibernate gets confused sometimes.
EDIT
You seem to be confused over the tables
The report table will hold the report id, data about the report as well as its current status
The report_status table will hold all the previous status's of the report as well as the current one represented as a composite primary key of status_id and report_id
The status table will hold ALL the possible status's a report can have.
For eg. If the possible status's are "On Hold","In production", "Released", "editing" , these will be stored in the status table.
The other 2 tables will reference this for the status they are referring to.