I have a table where the the parent object has an optional many-to-one relationship. The problem is that the table is setup to default the fkey column to 0.
When selecting, using fetch=”join”, etc– the default of 0 on the fkey is being used to try over and over to select from another table for the ID 0. Of course this doesn’t exist, but how can I tell Hibernate to treat a value of 0 to be the same as NULL– to not cycle through 20+ times in fetching a relationship which doesn’t exist?
<many-to-one name="device" lazy="false" class="Device" not-null="true" access="field" cascade="none" not-found="ignore">
<column name="DEVICEID" default="0" not-null="false"/>
I was able to fix this by creating an id-long type which extends the built in Long type, but if the id returned from SQL was 0, return null instead. This kept the allowance of default 0s in our DB while getting hibernate to stop doing lazy fetches.
}
The reason for enforcing explicit default 0 is that Oracle handles indexing and null values oddly, suggesting better query performance with explicit values vs. ‘where col is [not] null’