次のような列挙型として定義されているステータスタイプを含むクラスがあるとします。
public class MyObject
{
public virtual int Id { get; set; }
public virtual SomeEntity Data { get; set; }
public virtual MyStatusEnum Status { get; set; }
}
public enum MyStatusEnum
{
Active = 1,
Paused = 2,
Completed = 3
}
FluentnHibernateを介して行われたマッピングは次のようになります。
public class MyObjectMap: ClassMap<MyObject>
{
public MyObjectMap()
{
this.Table("my_object_table");
...
this.References(x => x.SomeEntity).Column("some_entity_id").Not.Nullable();
this.Map(x => x.Status).Column("status_type").CustomType<MyStatusEnum>().Not.Nullable();
}
}
セットアップが邪魔になったので、私のジレンマ:
私のリポジトリクラスでは、すべてのMyObjectエンティティをStatusプロパティで並べ替えたいと考えています。これは、nHibernateがintとして保持されます。ただし、制御できない能力のため、列挙値がアルファベット順に並べられるようにMyStatusEnumを並べ替えることはできません。MyObjectsのリストを選択するための条件を作成し、それをStatusプロパティで並べ替えようとすると、Statusのint値で並べ替えられます。
ICriteria criteria = this.Session.CreateCriteria<MyObject>("obj")
.AddOrder(Order.Asc("Status"))
.List()
列挙型の名前で注文できるようにしたいと思います。任意のアイデアをいただければ幸いです。