こんにちは、テーブル間の結合を実行したいのですが、実行できません。
これが私のクラスです:
public class Person
{
public virtual LoginAccount LoginAccount { get; set; }
}
public class LoginAccount
{
//fields of LoginAccount
}
Person のマッピング ファイル
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly ="HobbyHomes" namespace ="HobbyHomes.Model" >
<class name ="Person">
<composite-id class="HobbyHomes.Model.LoginAccount" name="LoginAccount">
<key-property name="LoginAccountID">
<column name="LoginAccountID"></column>
</key-property>
</composite-id>
//other properties
</class>
これは、Person から LoginAccount の値を取得しようとしたものです。
public IList<Person> FetchPerson(ICollection<Learner> learner)
{
log.Debug("Started");
ISession session = DataAccessLayerHelper.OpenReaderSession();
IList<Person> person = null;
ITransaction transaction = null;
Disjunction dj = new Disjunction();
try
{
transaction = session.BeginTransaction();
person = session.CreateCriteria(typeof(Person), "person")
.CreateCriteria("person.LoginAccount", "LoginAccount", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.List<Person>();
transaction.Commit();
}
catch (Exception ex)
{
if (transaction != null && transaction.IsActive)
transaction.Rollback();
log.Error(ex);
}
finally
{
if (transaction != null)
transaction.Dispose();
if (session != null && session.IsConnected)
session.Close();
}
log.Debug("End");
return person;
}
しかし、これを使用すると、Person クラスのフィールドのみを取得でき、LoginAccount クラスのフィールドは取得できません。助けてください。