JVM как предпочтительный вариант. Это допускало бы широкую поддержку библиотеки со дня один. Посмотрите, как это принесло пользу Clojure.
кроме того, LLVM мог бы быть интересным выбором, но я не уверен, насколько "доказанный" это, так как у меня не может быть зрелой реализации языка с бэкендом LLVM.
я избежал бы.NET. Это сделало бы его тяжелее для сбора сообщества и поддержки вокруг нового языка, и Вы собираетесь нуждаться в нем скоро. Кроме того, это не является межплатформенным.
Независимо от того, что Вы выбираете, Вы изучите много путем выполнения так.
Вы можете выбрать отдельные результаты, указав SetResultsTransformer(Transformers.DistinctRootEntity);
Попробуйте использовать Фьючерс :
ICriteria criteriaFuture1
= session.CreateCriteria<MyRootType>()
.SetFetchMode("ChildCollection1", FetchMode.Eager)
.Add(Restrictions.IdEq(id))
.SetResultTransformer(Transformers.DistinctRootEntity)
.FutureValue<MyRootType>();
ICriteria criteriaFuture2
= session.CreateCriteria<MyRootType>()
.SetFetchMode("ChildCollection2", FetchMode.Eager)
.Add(Restrictions.IdEq(id))
.SetResultTransformer(Transformers.DistinctRootEntity)
.FutureValue<MyRootType>();
return criteriaFuture1.Value;
.