.build(); AssociationPersister associationPersister = new AssociationPersister.Builder( inversePersister.getMappedClass() .gridDialect( gridDialect ) .key( uniqueKey, gridUniqueKeyType ) .associationKeyMetadata( associationKeyMetadata ) .session( session ) .associationTypeContext( associationTypeContext ) .hostingEntity( session.getPersistenceContext().getEntity( new org.hibernate.engine.spi.EntityKey( (Serializable) uniqueKey, inversePersister ) ) ) .build();
Object owner = session.getPersistenceContext().getCollectionOwner( id, persister ); AssociationPersister associationPersister = new AssociationPersister.Builder( persister.getOwnerEntityPersister().getMappedClass() .gridDialect( gridDialect ) .key( id, persister.getKeyGridType() ) .associationKeyMetadata( persister.getAssociationKeyMetadata() ) .associationTypeContext( persister.getAssociationTypeContext() ) .hostingEntity( owner ) .session( session ) .build();
private AssociationPersister createInverseAssociationPersister(int propertyIndex, AssociationKeyMetadata associationKeyMetadata, Object[] keyColumnValues) { OptionsServiceContext serviceContext = session.getFactory() .getServiceRegistry() .getService( OptionsService.class ) .context(); Class<?> entityType = persister.getPropertyTypes()[propertyIndex].getReturnedClass(); OgmEntityPersister inverseEntityPersister = (OgmEntityPersister) persister.getFactory().getMetamodel().entityPersister( entityType ); String mainSidePropertyName = persister.getPropertyNames()[propertyIndex]; AssociationTypeContext associationTypeContext = new AssociationTypeContextImpl.Builder( serviceContext ) .associationKeyMetadata( associationKeyMetadata ) .hostingEntityPersister( inverseEntityPersister ) .mainSidePropertyName( mainSidePropertyName ) .build(); return new AssociationPersister.Builder( persister.getPropertyTypes()[propertyIndex].getReturnedClass() ) .hostingEntity( getReferencedEntity( propertyIndex ) ) .gridDialect( gridDialect ) .associationKeyMetadata( associationKeyMetadata ) .keyColumnValues( keyColumnValues ) .session( session ) .associationTypeContext( associationTypeContext ) .build(); }
private void removeNavigationInformation(Serializable id, Object entity, SharedSessionContractImplementor session) { for ( int propertyIndex = 0; propertyIndex < getEntityMetamodel().getPropertySpan(); propertyIndex++ ) { if ( propertyMightHaveNavigationalInformation[propertyIndex] ) { CollectionType collectionType = (CollectionType) getPropertyTypes()[propertyIndex]; OgmCollectionPersister collectionPersister = (OgmCollectionPersister) getFactory() .getMetamodel().collectionPersister( collectionType.getRole() ); AssociationPersister associationPersister = new AssociationPersister.Builder( collectionPersister.getOwnerEntityPersister().getMappedClass() ) .hostingEntity( entity ) .gridDialect( gridDialect ) .key( id, collectionPersister.getKeyGridType() ) .associationKeyMetadata( collectionPersister.getAssociationKeyMetadata() ) .associationTypeContext( collectionPersister.getAssociationTypeContext() ) .session( session ) .build(); Association association = associationPersister.getAssociationOrNull(); if ( association != null && !association.isEmpty() ) { association.clear(); associationPersister.flushToDatastore(); } } } }
private AssociationPersister getAssociationPersister(Object collectionOwner, Object[] keyColumnValues, SharedSessionContractImplementor session) { return new AssociationPersister.Builder( getOwnerEntityPersister().getMappedClass() ) .hostingEntity( collectionOwner ) .gridDialect( gridDialect ) .keyColumnValues( keyColumnValues ) .associationKeyMetadata( associationKeyMetadata ) .associationTypeContext( associationTypeContext ) .session( session ) .build(); }
private AssociationPersister getAssociationPersister(Object collectionOwner, Serializable id, SharedSessionContractImplementor session) { return new AssociationPersister.Builder( getOwnerEntityPersister().getMappedClass() ) .hostingEntity( collectionOwner ) .gridDialect( gridDialect ) .key( id, getKeyGridType() ) .associationKeyMetadata( associationKeyMetadata ) .associationTypeContext( associationTypeContext ) .session( session ) .build(); }