Package org.hibernate.ogm.model.key.spi

Examples of org.hibernate.ogm.model.key.spi.AssociationKeyMetadata


    //we get the property type for an associated entity
    final int propertyIndex = getPropertyIndex( propertyName );
    final GridType gridUniqueKeyType = getUniqueKeyTypeFromAssociatedEntity( propertyIndex, propertyName );
    //get the associated property index (to get its column names)
    //find the ids per unique property name
    AssociationKeyMetadata associationKeyMetadata = inverseOneToOneAssociationKeyMetadata.get( propertyName );
    if ( associationKeyMetadata == null ) {
      throw new AssertionFailure( "loadByUniqueKey on a non EntityType:" + propertyName );
    }

    OgmEntityPersister inversePersister = (OgmEntityPersister) ((EntityType) getPropertyTypes()[propertyIndex]).getAssociatedJoinable( session.getFactory() );

    OptionsServiceContext serviceContext = session.getFactory()
        .getServiceRegistry()
        .getService( OptionsService.class )
        .context();

    AssociationTypeContext associationTypeContext = new AssociationTypeContextImpl(
        serviceContext.getPropertyOptions( inversePersister.getMappedClass(), associationKeyMetadata.getCollectionRole() ),
        associationKeyMetadata.getAssociatedEntityKeyMetadata(),
        getPropertyNames()[propertyIndex]
    );

    AssociationPersister associationPersister = new AssociationPersister(
        inversePersister.getMappedClass()
View Full Code Here


  @Test
  public void canObtainInverseMetadataForBiDirectionalManyToOne() {
    // obtain inverse collection from the main side
    OgmEntityPersister entityPersister = (OgmEntityPersister) sessions.getEntityPersister( SalesGuy.class.getName() );
    AssociationKeyMetadata inverseAssociationKeyMetadata = BiDirectionalAssociationHelper.getInverseAssociationKeyMetadata( entityPersister, entityPersister.getPropertyIndex( "salesForce" ) );
    assertThat( inverseAssociationKeyMetadata ).isNotNull();
    assertThat( inverseAssociationKeyMetadata.getTable() ).isEqualTo( "SalesGuy" );
    assertThat( inverseAssociationKeyMetadata.getColumnNames() ).isEqualTo( new String[]{ "salesForce_id" } );
    assertThat( inverseAssociationKeyMetadata.getRowKeyColumnNames() ).isEqualTo( new String[]{ "salesForce_id", "id" } );

    // no persister on the main side
    OgmCollectionPersister collectionPersister = (OgmCollectionPersister) sessions.getCollectionPersister( SalesForce.class.getName() + ".salesGuys" );
    OgmCollectionPersister mainSidePersister = BiDirectionalAssociationHelper.getInverseCollectionPersister( collectionPersister );
    assertThat( mainSidePersister ).isNull();
View Full Code Here

  @Test
  public void canObtainInverseMetadataForBiDirectionalManyToMany() {
    // obtain inverse collection from the main side
    OgmEntityPersister entityPersister = (OgmEntityPersister) sessions.getEntityPersister( AccountOwner.class.getName() );
    AssociationKeyMetadata inverseAssociationKeyMetadata = BiDirectionalAssociationHelper.getInverseAssociationKeyMetadata( entityPersister, entityPersister.getPropertyIndex( "bankAccounts" ) );
    assertThat( inverseAssociationKeyMetadata ).isNotNull();
    assertThat( inverseAssociationKeyMetadata.getTable() ).isEqualTo( "AccountOwner_BankAccount" );
    assertThat( inverseAssociationKeyMetadata.getColumnNames() ).isEqualTo( new String[]{ "bankAccounts_id" } );
    assertThat( inverseAssociationKeyMetadata.getRowKeyColumnNames() ).isEqualTo( new String[]{ "bankAccounts_id", "owners_id" } );

    // obtain main side collection from the inverse side
    entityPersister = (OgmEntityPersister) sessions.getEntityPersister( BankAccount.class.getName() );
    AssociationKeyMetadata mainSideAssociationKeyMetadata = BiDirectionalAssociationHelper.getInverseAssociationKeyMetadata( entityPersister, entityPersister.getPropertyIndex( "owners" ) );
    assertThat( mainSideAssociationKeyMetadata ).isNotNull();
    assertThat( mainSideAssociationKeyMetadata.getTable() ).isEqualTo( "AccountOwner_BankAccount" );
    assertThat( mainSideAssociationKeyMetadata.getColumnNames() ).isEqualTo( new String[]{ "owners_id" } );
    assertThat( mainSideAssociationKeyMetadata.getRowKeyColumnNames() ).isEqualTo( new String[]{ "owners_id", "bankAccounts_id" } );
  }
View Full Code Here

  @Test
  public void canHandleSeveralAssociationsOnInverseSide() {
    // obtain inverse collection from the main side
    OgmEntityPersister entityPersister = (OgmEntityPersister) sessions.getEntityPersister( Pancake.class.getName() );
    AssociationKeyMetadata inverseAssociationKeyMetadata = BiDirectionalAssociationHelper.getInverseAssociationKeyMetadata( entityPersister, entityPersister.getPropertyIndex( "eater" ) );
    assertThat( inverseAssociationKeyMetadata ).isNotNull();
    assertThat( inverseAssociationKeyMetadata.getTable() ).isEqualTo( "Pancake" );
    assertThat( inverseAssociationKeyMetadata.getColumnNames() ).isEqualTo( new String[]{ "eater_id" } );
    assertThat( inverseAssociationKeyMetadata.getRowKeyColumnNames() ).isEqualTo( new String[]{ "eater_id", "id" } );

    // obtain inverse collection from the main side, different entity
    entityPersister = (OgmEntityPersister) sessions.getEntityPersister( Muffin.class.getName() );
    inverseAssociationKeyMetadata = BiDirectionalAssociationHelper.getInverseAssociationKeyMetadata( entityPersister, entityPersister.getPropertyIndex( "eater" ) );
    assertThat( inverseAssociationKeyMetadata ).isNotNull();
    assertThat( inverseAssociationKeyMetadata.getTable() ).isEqualTo( "Muffin" );
    assertThat( inverseAssociationKeyMetadata.getColumnNames() ).isEqualTo( new String[]{ "eater_id" } );
    assertThat( inverseAssociationKeyMetadata.getRowKeyColumnNames() ).isEqualTo( new String[]{ "eater_id", "id" } );
  }
View Full Code Here

  @Test
  public void canObtainInverseMetadataForBiDirectionalOneToOne() {
    // obtain inverse collection from the main side
    OgmEntityPersister entityPersister = (OgmEntityPersister) sessions.getEntityPersister( Husband.class.getName() );
    AssociationKeyMetadata inverseAssociationKeyMetadata = BiDirectionalAssociationHelper.getInverseAssociationKeyMetadata( entityPersister, entityPersister.getPropertyIndex( "wife" ) );
    assertThat( inverseAssociationKeyMetadata ).isNotNull();
    assertThat( inverseAssociationKeyMetadata.getTable() ).isEqualTo( "Husband" );
    assertThat( inverseAssociationKeyMetadata.getColumnNames() ).isEqualTo( new String[]{ "wife" } );
    assertThat( inverseAssociationKeyMetadata.getRowKeyColumnNames() ).isEqualTo( new String[]{ "id", "wife" } );
  }
View Full Code Here

    Collection<CollectionPersister> collectionPersisters = sessionFactoryImplementor.getCollectionPersisters().values();
    for ( CollectionPersister collectionPersister : collectionPersisters ) {
      if ( collectionPersister instanceof OgmCollectionPersister ) {
        OgmCollectionPersister ogmCollectionPersister = (OgmCollectionPersister) collectionPersister;
        EntityKeyMetadata ownerEntityKeyMetadata = ( (OgmEntityPersister) ( ogmCollectionPersister.getOwnerEntityPersister() ) ).getEntityKeyMetadata();
        AssociationKeyMetadata associationKeyMetadata = ogmCollectionPersister.getAssociationKeyMetadata();
        queryMap.put( associationKeyMetadata, new Neo4jAssociationQueries( ownerEntityKeyMetadata, associationKeyMetadata ) );
      }
    }
    return queryMap;
  }
View Full Code Here

    String tableName = input.readUTF();
    String[] columnNames = (String[]) input.readObject();
    Object[] values = (Object[]) input.readObject();

    AssociationKeyMetadata associationKeyMetadata = new AssociationKeyMetadata( tableName, columnNames, null, null, null, false, null, null );

    // the engine never accesses deserialized key instances so it's ok to leave the additional attributes
    // null; we should still consider extract these attributes to avoid potential confusion
    return new AssociationKey( associationKeyMetadata, values, null );
  }
View Full Code Here

      OgmEntityPersister otherSidePersister = (OgmEntityPersister) ( (EntityType) propertyType).getAssociatedJoinable( getFactory() );
      String inverseOneToOneProperty = getInverseOneToOneProperty( property, otherSidePersister );

      if ( inverseOneToOneProperty != null ) {
        AssociationKeyMetadata metadata = new AssociationKeyMetadata(
            getTableName(),
            propertyColumnNames,
            rowKeyColumnNames,
            // Because it is an association to one entity it should not need an index column
            ArrayHelper.EMPTY_STRING_ARRAY,
View Full Code Here

    //we get the property type for an associated entity
    final int propertyIndex = getPropertyIndex( propertyName );
    final GridType gridUniqueKeyType = getUniqueKeyTypeFromAssociatedEntity( propertyIndex, propertyName );
    //get the associated property index (to get its column names)
    //find the ids per unique property name
    AssociationKeyMetadata associationKeyMetadata = inverseOneToOneAssociationKeyMetadata.get( propertyName );
    if ( associationKeyMetadata == null ) {
      throw new AssertionFailure( "loadByUniqueKey on a non EntityType:" + propertyName );
    }

    OgmEntityPersister inversePersister = (OgmEntityPersister) ((EntityType) getPropertyTypes()[propertyIndex]).getAssociatedJoinable( session.getFactory() );
View Full Code Here

    String mainSideProperty = mainSidePersister.getPropertyNames()[propertyIndex];

    // property is a one-to-one association (a many-to-one cannot be on the inverse side) -> get the meta-data
    // straight from the main-side persister
    AssociationKeyMetadata inverseOneToOneMetadata = mainSidePersister.getInverseOneToOneAssociationKeyMetadata( mainSideProperty );
    if ( inverseOneToOneMetadata != null ) {
      return inverseOneToOneMetadata;
    }

    // process properties of inverse side and try to find association back to main side
View Full Code Here

TOP

Related Classes of org.hibernate.ogm.model.key.spi.AssociationKeyMetadata

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.