Hi Guys,
I have done a search on google and on here but don't seem to find an answer to my problem.
I am trying to map a collection using a custom query but i keep getting an error. Basicaly i have a User entity and Hotel entity. I wan users to have a list of most viewed and recently viewd hotels. I am doing this by creating to dynamic collections setup as follows:
NHibernate mapping:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Core.Domain.User, Core" table="`User`" lazy="false">
<id name="Id" column="`UserId`" unsaved-value="00000000-0000-0000-0000-000000000000">
<generator class="guid" />
</id>
<property name="Username" />
<property name="Salt" />
<property name="Firstname" />
<property name="Lastname" />
<property name="Email" />
<property name="FailedLoginCount" />
<property name="IsActive" />
<property name="IsLockedOut" />
<property name="CreatedDate" />
<property name="ModifiedDate" />
<property name="LastLoginDate" />
<property name="LastLoginIp" />
<bag name="RecentlyViewedHotels" access="nosetter.camelcase-underscore" lazy="true" generic="true">
<key />
<one-to-many class="Core.Domain.Hotel, Core" />
<loader query-ref="GetRecentlyViewedHotels" />
</bag>
<bag name="MostViewedHotels" access="nosetter.camelcase-underscore" lazy="true" generic="true">
<key />
<one-to-many class="Core.Domain.Hotel, Core" />
<loader query-ref="GetMostViewedHotels" />
</bag>
</class>
<sql-query name="GetRecentlyViewedHotels">
<return alias="h" class="Core.Domain.Hotel, Core"/>
SELECT TOP 10 {h.*}
FROM Hotel h
LEFT OUTER JOIN UserHotelView uhv
ON uhv.HotelId = h.HotelId
ORDER BY uhv.LastViewedDate DESC
</sql-query>
<sql-query name="GetMostViewedHotels">
<return alias="h" class="Core.Domain.Hotel, Core"/>
SELECT TOP 10 {h.*}
FROM Hotel h
LEFT OUTER JOIN UserHotelView uhv
ON uhv.HotelId = h.HotelId
ORDER BY uhv.Count DESC
</sql-query>
</hibernate-mapping>
But when i pull a user back and try to access either list i get the following error:
Code:
No positional parameters in query: SELECT {h.*}
FROM Hotel h
LEFT OUTER JOIN UserHotelView uhv
ON uhv.HotelId = h.HotelId
ORDER BY uhv.Count DESC
Looking at the stack trace i see the following:
Code:
NHibernate.Impl.AbstractQueryImpl.SetParameter(Int32 position, Object val, IType type) +152
Which looks as though NHibernate is trying to set a parameter that doesn't exist. Do i need to add a certain parameter to my collection? or am i doing something wrong?
Many thanks
Matt