nhibernate: usando partes do compositeId em uma propriedade ManyToOne

Eu tenho uma estrutura de tabela como esta:

Table entity
(
    otherEntity_id  int  // primarykey
    id              int  // primarykey

    parent_id       int
)

and class

public class Entity
{
    public OtherEntity Other { get; set; }
    // simple int to discriminate different Entity for the same OtherEntity
    public int Id { get; set; }

    public Entity Parent { get; set; }
}

é possível mapear isso para a classe Entity? (se sim, como)

os seguintes lançamentos ao salvar, porque não há colunas suficientes no comando db, uma é usada duas vezes:

        CompositeId()
            .KeyReference(e => e.Other, "otherEntity_id")
            .KeyProperty(e => e.Id, "id")

        References(e => e.Parent).Columns("otherEntity_id", "parent_id");

Não importa usar xml ou fluent

Edit: sem a referência mapeada, nenhum erro, com a referência mapeada após o erro (eu tive esse erro várias vezes, sempre que tenho mais valores do que as colunas mapeadas):

System.ArgumentOutOfRangeException: System.ArgumentOutOfRangeException : Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
Parametername: index
   bei System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   bei System.ThrowHelper.ThrowArgumentOutOfRangeException()
   bei System.Collections.Generic.List`1.get_Item(Int32 index)
   bei Npgsql.NpgsqlParameterCollection.get_Item(Int32 index)
   bei Npgsql.NpgsqlParameterCollection.GetParameter(Int32 index)
   bei System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item(Int32 index)
   bei NHibernate.Type.Int16Type.Set(IDbCommand rs, Object value, Int32 index)
   bei NHibernate.Type.NullableType.NullSafeSet(IDbCommand cmd, Object value, Int32 index)
   bei NHibernate.Type.NullableType.NullSafeSet(IDbCommand st, Object value, Int32 index, ISessionImplementor session)
   bei NHibernate.Type.ComponentType.NullSafeSet(IDbCommand st, Object value, Int32 begin, ISessionImplementor session)
   bei NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object id, Object[] fields, Object rowId, Boolean[] includeProperty, Boolean[][] includeColumns, Int32 table, IDbCommand statement, ISessionImplementor session, Int32 index)
   bei NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql, Object obj, ISessionImplementor session)
   bei NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Object obj, ISessionImplementor session)
   bei NHibernate.Action.EntityInsertAction.Execute()
   bei NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
   bei NHibernate.Engine.ActionQueue.ExecuteActions(IList list)
   bei NHibernate.Engine.ActionQueue.ExecuteActions()
   bei NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session)
   bei NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)
   bei NHibernate.Impl.SessionImpl.Flush()

testcode

        var e1 = new Entity { Id = 2, Other = other };
        var e2 = new Entity { Id = 3, Other = other, Parent = e1 };

        Session.Save(e1);
        Session.Save(e2);
        Session.Flush();    // throws here
        Session.Clear();

        var key = new Entity { Id = e2.Id, Other = e2.Other };

        var loaded = Session.Get<Entity>(key);

Editar

se não for possível alguém poderia me dizer por favor?

questionAnswers(2)

yourAnswerToTheQuestion