private <S, R, T> R createByExample( S from, Class<R> relationType, T to, Map<PrimitivePropertyMethodMetadata<PropertyMetadata>, Object> example) { MetadataProvider<EntityMetadata, EntityDiscriminator, RelationMetadata, RelationDiscriminator> metadataProvider = sessionContext.getMetadataProvider(); AbstractRelationPropertyMethodMetadata<?> fromProperty = metadataProvider.getPropertyMetadata(from.getClass(), relationType, FROM); AbstractRelationPropertyMethodMetadata<?> toProperty = metadataProvider.getPropertyMetadata(to.getClass(), relationType, TO); Entity entity = sessionContext.getEntityInstanceManager().getDatastoreType(from); R instance = sessionContext .getEntityPropertyManager() .createRelationReference(entity, fromProperty, to, toProperty, example); sessionContext.getInstanceListenerService().postCreate(instance); return instance; }