private Object[] getNaturalIdValues(Object[] state, EntityPersister persister) { final int[] naturalIdPropertyIndexes = persister.getNaturalIdentifierProperties(); final Object[] naturalIdValues = new Object[naturalIdPropertyIndexes.length]; for ( int i = 0; i < naturalIdPropertyIndexes.length; i++ ) { naturalIdValues[i] = state[naturalIdPropertyIndexes[i]]; } return naturalIdValues; } }
@Override public Object[] extractNaturalIdValues(Object[] state, EntityPersister persister) { final int[] naturalIdPropertyIndexes = persister.getNaturalIdentifierProperties(); if ( state.length == naturalIdPropertyIndexes.length ) { return state; } final Object[] naturalIdValues = new Object[naturalIdPropertyIndexes.length]; for ( int i = 0; i < naturalIdPropertyIndexes.length; i++ ) { naturalIdValues[i] = state[naturalIdPropertyIndexes[i]]; } return naturalIdValues; }
/** * Invariant validate of the natural id. Checks include<ul> * <li>that the entity defines a natural id</li> * <li>the number of natural id values matches the expected number</li> * </ul> * * @param persister The persister representing the entity type. * @param naturalIdValues The natural id values */ protected void validateNaturalId(EntityPersister persister, Object[] naturalIdValues) { if ( !persister.hasNaturalIdentifier() ) { throw new IllegalArgumentException( "Entity did not define a natrual-id" ); } if ( persister.getNaturalIdentifierProperties().length != naturalIdValues.length ) { throw new IllegalArgumentException( "Mismatch between expected number of natural-id values and found." ); } }
private SimpleNaturalIdLoadAccessImpl(EntityPersister entityPersister) { super( entityPersister ); if ( entityPersister.getNaturalIdentifierProperties().length != 1 ) { throw new HibernateException( String.format( "Entity [%s] did not define a simple natural id", entityPersister.getEntityName() ) ); } final int naturalIdAttributePosition = entityPersister.getNaturalIdentifierProperties()[0]; this.naturalIdAttributeName = entityPersister.getPropertyNames()[naturalIdAttributePosition]; }
@Override public Object createNaturalIdKey(Object[] naturalIdValues, EntityPersister persister, SharedSessionContractImplementor session) { // natural ids always need to be wrapped return new NaturalIdCacheKey(naturalIdValues, persister.getPropertyTypes(), persister.getNaturalIdentifierProperties(), null, session); }
public static Object staticCreateNaturalIdKey(Object[] naturalIdValues, EntityPersister persister, SharedSessionContractImplementor session) { return new NaturalIdCacheKey( naturalIdValues, persister.getPropertyTypes(), persister.getNaturalIdentifierProperties(), persister.getRootEntityName(), session ); }
@Override public Object[] extractNaturalIdValues(Object entity, EntityPersister persister) { if ( entity == null ) { throw new AssertionFailure( "Entity from which to extract natural id value(s) cannot be null" ); } if ( persister == null ) { throw new AssertionFailure( "Persister to use in extracting natural id value(s) cannot be null" ); } final int[] naturalIdentifierProperties = persister.getNaturalIdentifierProperties(); final Object[] naturalIdValues = new Object[naturalIdentifierProperties.length]; for ( int i = 0; i < naturalIdentifierProperties.length; i++ ) { naturalIdValues[i] = persister.getPropertyValue( entity, naturalIdentifierProperties[i] ); } return naturalIdValues; }
public CachedNaturalId(EntityPersister persister, Object[] values) { this.persister = persister; this.values = values; final int prime = 31; int hashCodeCalculation = 1; hashCodeCalculation = prime * hashCodeCalculation + persister.hashCode(); final int[] naturalIdPropertyIndexes = persister.getNaturalIdentifierProperties(); naturalIdTypes = new Type[ naturalIdPropertyIndexes.length ]; int i = 0; for ( int naturalIdPropertyIndex : naturalIdPropertyIndexes ) { final Type type = persister.getPropertyType( persister.getPropertyNames()[ naturalIdPropertyIndex ] ); naturalIdTypes[i] = type; final int elementHashCode = values[i] == null ? 0 :type.getHashCode( values[i], persister.getFactory() ); hashCodeCalculation = prime * hashCodeCalculation + elementHashCode; i++; } this.hashCode = hashCodeCalculation; }
if ( entityPersister.getNaturalIdentifierProperties().length != naturalIdValues.size() ) { throw new HibernateException( String.format( "Entity [%s] defines its natural-id with %d properties but only %d were specified", entityPersister.getEntityName(), entityPersister.getNaturalIdentifierProperties().length, naturalIdValues.size() this.lockOptions = lockOptions; int[] naturalIdPropertyPositions = entityPersister.getNaturalIdentifierProperties(); orderedNaturalIdValues = new Object[naturalIdPropertyPositions.length]; int i = 0;
when(entityPersister.getNaturalIdentifierProperties()).thenReturn(new int[] {0, 1, 2}); when(entityPersister.getPropertyTypes()).thenReturn(new Type[] { mockType,
final int[] naturalIdentifierProperties = entityPersister.getNaturalIdentifierProperties();
final int[] props = persister.getNaturalIdentifierProperties(); final Object[] entitySnapshot = getDatabaseSnapshot( id, persister ); if ( entitySnapshot == NO_ROW || entitySnapshot == null ) {
final int[] naturalIdentifierPropertiesIndexes = persister.getNaturalIdentifierProperties(); final Type[] propertyTypes = persister.getPropertyTypes(); final boolean[] propertyUpdateability = persister.getPropertyUpdateability();
private void validateNaturalId(EntityPersister persister, Object[] naturalIdValues) { if ( !persister.hasNaturalIdentifier() ) { throw new IllegalArgumentException( "Entity did not define a natrual-id" ); } if ( persister.getNaturalIdentifierProperties().length != naturalIdValues.length ) { throw new IllegalArgumentException( "Mismatch between expected number of natural-id values and found." ); } }
private Object[] getNaturalIdValues(EntityEntry entityEntry, EntityPersister persister) { final int[] naturalIdPropertyIndexes = persister.getNaturalIdentifierProperties(); final Object[] naturalIdValues = new Object[naturalIdPropertyIndexes.length]; final Object[] loadedState = entityEntry.getLoadedState(); for ( int i = 0; i < naturalIdPropertyIndexes.length; i++ ) { naturalIdValues[i] = loadedState[naturalIdPropertyIndexes[i]]; } return naturalIdValues; }
private void validateNaturalId(EntityPersister persister, Object[] naturalIdValues) { if ( !persister.hasNaturalIdentifier() ) { throw new IllegalArgumentException( "Entity did not define a natrual-id" ); } if ( persister.getNaturalIdentifierProperties().length != naturalIdValues.length ) { throw new IllegalArgumentException( "Mismatch between expected number of natural-id values and found." ); } }
private Object[] getNaturalIdValues(EntityEntry entityEntry, EntityPersister persister) { final int[] naturalIdPropertyIndexes = persister.getNaturalIdentifierProperties(); final Object[] naturalIdValues = new Object[naturalIdPropertyIndexes.length]; final Object[] loadedState = entityEntry.getLoadedState(); for ( int i = 0; i < naturalIdPropertyIndexes.length; i++ ) { naturalIdValues[i] = loadedState[naturalIdPropertyIndexes[i]]; } return naturalIdValues; }
@Override public Object createNaturalIdKey(Object[] naturalIdValues, EntityPersister persister, SessionImplementor session) { return new NaturalIdCacheKey(naturalIdValues, persister.getPropertyTypes(), persister.getNaturalIdentifierProperties(), persister.getRootEntityName(), session); }
@Override public Object createNaturalIdKey(Object[] naturalIdValues, EntityPersister persister, SharedSessionContractImplementor session) { return new NaturalIdCacheKey(naturalIdValues, persister.getPropertyTypes(), persister.getNaturalIdentifierProperties(), persister.getRootEntityName(), (SessionImplementor) session); }
@Override public Object createNaturalIdKey(Object[] naturalIdValues, EntityPersister persister, SessionImplementor session) { return new NaturalIdCacheKey(naturalIdValues, persister.getPropertyTypes(), persister.getNaturalIdentifierProperties(), persister.getRootEntityName(), session); }