@Override public Member resolveMember(AttributeContext attributeContext) { final AbstractIdentifiableType identifiableType = (AbstractIdentifiableType) attributeContext.getOwnerType(); final EntityMetamodel entityMetamodel = getDeclarerEntityMetamodel( identifiableType ); final String versionPropertyName = attributeContext.getPropertyMapping().getName(); if ( !versionPropertyName.equals( entityMetamodel.getVersionProperty().getName() ) ) { // this should never happen, but to be safe... throw new IllegalArgumentException( "Given property did not match declared version property" ); } final Getter getter = entityMetamodel.getTuplizer().getVersionGetter(); if ( PropertyAccessMapImpl.GetterImpl.class.isInstance( getter ) ) { return new MapMember( versionPropertyName, attributeContext.getPropertyMapping().getType().getReturnedClass() ); } else { return getter.getMember(); } } };
private Type locateVersionType() { return entityMetamodel.getVersionProperty() == null ? null : entityMetamodel.getVersionProperty().getType(); }
@Override public void resetIdentifier( Object entity, Serializable currentId, Object currentVersion, SharedSessionContractImplementor session) { //noinspection StatementWithEmptyBody if ( entityMetamodel.getIdentifierProperty().getIdentifierGenerator() instanceof Assigned ) { } else { //reset the id Serializable result = entityMetamodel.getIdentifierProperty() .getUnsavedValue() .getDefaultValue( currentId ); setIdentifier( entity, result, session ); //reset the version VersionProperty versionProperty = entityMetamodel.getVersionProperty(); if ( entityMetamodel.isVersioned() ) { setPropertyValue( entity, entityMetamodel.getVersionPropertyIndex(), versionProperty.getUnsavedValue().getDefaultValue( currentVersion ) ); } } }
return new VersionProperty( persister, sessionFactory,
.getUnsavedValue().isUnsaved( version ); if ( result != null ) { return result;