クラスを考えると:
public class VotingResult : DomainEntity
{
public const string DefaultTag = "overall";
public VotingResult()
{
Dimension = DefaultTag;
}
public virtual DomainEntity Item { get; set; }
public virtual String Dimension { get; set; }
public virtual double Value { get; set; }
public virtual int VoteCount { get; set; }
public virtual DateTime DateCreated {get; set;}
}
そして、マッピング
public sealed class VotingResultMap : ClassMap<VotingResult>
{
private VotingResultMap()
{
Id(x => x.Id);
Map(x => x.Option);
Map(x => x.Dimension);
Map(x => x.DateCreated);
Map(x => x.Value);
Map(x => x.VoteCount);
ReferencesAny(x => x.Item).AddMetaValues(); // extension method to add discriminators
}
}
Linq または HQL を介して VotingResult.Item.GetType() を投影する方法はありますか (「VotingResult から r.class を選択する」は機能しないようです。参照をタイプと ID に簡単にフラット化します。理想的には、Linq または AliasToBeanResultTransformer を使用します。
記録として、DomainEntity サブクラスの継承マッピングは Table Per Class です。
ありがとう