Make sure we keep the entity's @Version field in sync with any changes to the internal version of the instance.

git-svn-id: https://svn.apache.org/repos/asf/incubator/openjpa/trunk@494298 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Marc Prud'hommeaux 2007-01-09 02:00:15 +00:00
parent 0507313539
commit 799fc69719
1 changed files with 10 additions and 7 deletions

View File

@ -575,19 +575,22 @@ public class StateManagerImpl
} }
public void setVersion(Object version) { public void setVersion(Object version) {
_version = version;
_loadVersion = version; _loadVersion = version;
assignVersionField(version);
}
public void setNextVersion(Object version) {
assignVersionField(version);
}
private void assignVersionField(Object version) {
_version = version;
FieldMetaData vfield = _meta.getVersionField(); FieldMetaData vfield = _meta.getVersionField();
if (vfield != null) if (vfield != null)
store(vfield.getIndex(), JavaTypes.convert(version, store(vfield.getIndex(), JavaTypes.convert(version,
vfield.getTypeCode())); vfield.getTypeCode()));
} }
public void setNextVersion(Object version) {
_version = version;
}
public PCState getPCState() { public PCState getPCState() {
return _state; return _state;
} }
@ -879,7 +882,7 @@ public class StateManagerImpl
fireLifecycleEvent(LifecycleEvent.AFTER_STORE); fireLifecycleEvent(LifecycleEvent.AFTER_STORE);
} else if (reason == BrokerImpl.FLUSH_ROLLBACK) { } else if (reason == BrokerImpl.FLUSH_ROLLBACK) {
// revert to last loaded version and original oid // revert to last loaded version and original oid
_version = _loadVersion; assignVersionField(_loadVersion);
if (isNew() && (_flags & FLAG_OID_ASSIGNED) == 0) if (isNew() && (_flags & FLAG_OID_ASSIGNED) == 0)
_oid = null; _oid = null;
} }
@ -2492,7 +2495,7 @@ public class StateManagerImpl
// forget version info and impl data so we re-read next time // forget version info and impl data so we re-read next time
setLoaded(false); setLoaded(false);
_version = null; assignVersionField(null);
_loadVersion = null; _loadVersion = null;
if (_fieldImpl != null) if (_fieldImpl != null)
Arrays.fill(_fieldImpl, null); Arrays.fill(_fieldImpl, null);