public Object toObjectValue(ValueMapping vm,
Object val,
OpenJPAStateManager sm,
JDBCStore store,
JDBCFetchConfiguration fetch) throws SQLException {
if (sm == null)
throw new InvalidStateException(_loc.get("cant-project-owned",
vm));
// check null indicator first
if (_nullIdx != -1) {
Object nval;
if (_cols.length == 1)
nval = val;
else
nval = ((Object[]) val)[_nullIdx];
if (((EmbeddedClassStrategy) vm.getEmbeddedMapping().
getStrategy()).indicatesNull(nval))
return null;
}
// create embedded instance
OpenJPAStateManager em = store.getContext().embed(null, null, sm, vm);
int idx = (_synthetic) ? 1 : 0;
super.toObjectValue(em, vm, val, store, fetch, _cols, idx);
// after loading everything from result, load the rest of the
// configured fields
em.load(fetch);
return em.getManagedInstance();
}
|