I have a many-to-many relationship between Person and Group. When I access the members of a groups, I would like to sort by Lastname, Firstname. I tried to add the property order-by="Lastname, Firstname" on the bag Persons, but i have the error "Unknown column 'persons0_.Lastname' in 'order clause". NHibernate maps the order-by property on the table PersonGroup instead of Person. Is there a way make it work ?
Here's my mapping files :
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Person" table="Person">
<id name="PersonID" column="PersonD" type="Int32" unsaved-value="0">
<generator class="identity" />
</id>
<property name="Firstname" type="String" length="30" />
<property name="Lastname" type="String" length="30" />
<bag name="Groups" cascade="none" table="PersonGroup">
<key column="PersonID"/>
<many-to-many class="Group" column="GroupID"/>
</bag>
</class>
</hibernate-mapping>
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Group" >
<id name="GroupID" column="GroupID" type="Int32" unsaved-value="0">
<generator class="identity" />
</id>
<property name="Description" type="String" length="30"/>
<bag name="Persons" cascade="none" table="PersonGroup" order-by="Lastname, Firstname">
<key column="GroupID"/>
<many-to-many class="Person" column="PersonID"/>
</bag>
</class>
</hibernate-mapping>
The SQL generated :
Code:
SELECT persons0_.GroupID as GroupID_1_,
persons0_.PersonID as PersonID1_,
person1_.PersonID as PersonID4_0_,
person1_.Firstname as Firstname4_0_,
person1_.Lastname as Lastname4_0_,
person1_.Birthdate as Birthdate4_0_
FROM PersonGroup persons0_
left outer join Persons person1_ on persons0_.PersonID=person1_.PersonID
WHERE persons0_.GroupID=?p0
ORDER BY persons0_.Lastname, persons0_.Firstname; ?p0 = '1'