며칠 전에 질문을 던졌습니다. My previous question. 그래서 내 질문은 propery의 속성과 별개의 객체 목록에 따라 정렬하는 방법이었습니다. 그 당시 나는 QueryOver
을 사용하여 이것을 달성하려했지만 Criterea API를 사용하고 있습니다. 그리고 저는 평등 한 기록을 다시 가지고 있습니다. 이것은 내 criterea입니다다른 클래스의 속성에 의한 Nhibernate 주문
var lst =
Session.CreateCriteria<News>().CreateAlias("Category", "c").AddOrder(Order.Asc("c.Name")).
SetFirstResult(pageSize * pageNumber).SetMaxResults(pageSize).List<News>();
Distinct 투영을 추가하려고하면 아무 것도 얻지 못합니다. 그냥 예외 Unable to perform find[SQL: SQL not available]
. 내가 필요한 기능을 달성 할 수있는 방법
var lst =
Session.CreateCriteria<News>().SetProjection(Projections.Distinct(Projections.Id())).CreateAlias("Category", "c").AddOrder(Order.Asc("c.Name")).
SetFirstResult(pageSize * pageNumber).SetMaxResults(pageSize).List<News>();
클래스
public class News
{
public virtual int Id { get; protected set; }
public virtual string Topic { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual ISet<News> News { get; set; }
}
그리고 매핑
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="News" namespace="NewsManagement.Models">
<class name="News" table="News">
<id name="Id">
<generator class="native" />
</id>
<property name="Date" not-null="true" />
<many-to-one name="Category" fetch="join" column="CategoryId" class="Category, NHibernateManyToOne" not-null="true"/>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="News" namespace="NewsManagement.Models">
<class name="Category" table="Categories">
<id name="Id" column="Id">
<generator class="native" />
</id>
<set name="News" fetch="join" cascade="all-delete-orphan">
<key column="CategoryId" />
<one-to-many class="News, NHibernateOneToMany" />
</set>
</class>
</hibernate-mapping>
내가 criterea API를 사용하여 필요한 것을 얻을 수있는 방법이없는 경우
? 그리고 이것은 매우 중요합니다. 저는베이스에서 별개의 결과를 얻을 필요가 있으며 클라이언트에서 별개의 결과를 나타내지 않아야합니다.
는 자체적으로 각 클래스합니다 ('CREATEALIAS'와 'AddOrder()를'제거)를 가져 오기 위해 관리나요? 분명히 이것은 전체 클래스가 아니며 다 대다 및 다 대일의 클래스 이름은 이상하게 보입니다. –
CreateAlias 대신 CreateCriteria를 사용해 볼 수 있습니까? – ivowiblo