There are tons of examples online. Just google around a bit for them. I wouldn't recommend that design for accessing information from your database, because it doesn't seem very scalable. I would look at the Repository Design Pattern.
On Apr 3, 2:10 pm, jpcleve <[email protected]> wrote: > Anyone? > > On Apr 3, 9:23 am, jpcleve <[email protected]> wrote: > > > I guess I don't quite understand. I'm calling a stored procedure so > > there's no need to use the alias, right? > > The mapping works if I call GetNamedQuery() but I cannot drill down > > into the object tree to find the collection in a lazy load scenario. > > > On Apr 2, 5:47 pm, Fabio Maulo <[email protected]> wrote: > > > > As I wrote above...The alias is needed not only in the XML tag but in the > > > query. > > > > 2009/4/2 jpcleve <[email protected]> > > > > > Yep...I finally figured that one out. I have been able to load the > > > > collection via the custom loader but ONLY if I use the following > > > > statement from my object repository: > > > > > using (ISession session = NHibernateHelper.OpenSession()) > > > > { > > > > return session > > > > .GetNamedQuery("GetContactsByAccessContact") > > > > .SetInt32("AccessContactId", Id) > > > > .List<Contact>(); > > > > > } > > > > > Here's my collection mapping: (table is actually a view) > > > > > <bag name="Contacts" table="vwContacts"> > > > > <key column ="Id"/> > > > > <one-to-many class="AccessData.Domain.Contact, AccessData"/> > > > > <loader query-ref="GetContactsByAccessContact"/> > > > > </bag> > > > > > And my custom loader that executes a sproc: > > > > > <sql-query name="GetContactsByAccessContact"> > > > > <load-collection alias="Contacts" role="AccessContact.Contacts"/> > > > > exec GetContactsByAccessContact :AccessContactId > > > > </sql-query> > > > > > The sproc: > > > > > ALTER PROCEDURE [dbo].[GetContactsByAccessContact] > > > > > �...@accesscontactid int > > > > AS > > > > BEGIN > > > > > DECLARE @ContactUniqueID nvarchar(50) > > > > DECLARE @AccountID_FK int > > > > > SET @ContactUniqueID = (SELECT ContactUniqueID FROM > > > > AccessContacts > > > > WHERE ID = @AccessContactID) > > > > SET @AccountID_FK = (SELECT AccountID_FK FROM AccessContacts > > > > WHERE > > > > ID > > > > = @AccessContactID) > > > > > SELECT * > > > > FROM vwContacts c > > > > WHERE c.UniqueID = @ContactUniqueID AND c.AccountID_FK = > > > > @AccountID_FK > > > > > END > > > > > I don't understand, though, why NH won't populate the collection for > > > > me without my explict method-calling. The collection is mapped, so why > > > > isn't it lazy loaded when I evaluate the property that corresponds to > > > > my mapped collection? All of my other collections work just fine, but > > > > this one's giving me a fit. Any ideas why it won't lazy load for me? > > > > > Thanks, > > > > > John > > > > > On Apr 2, 3:15 pm, -_- <[email protected]> wrote: > > > > > I think nHibernate just "knows" to populate the first ? with Id > > > > > (because Id is the first declared property of the class you are using > > > > > to populate it?). > > > > > > On Apr 2, 2:18 pm, jpcleve <[email protected]> wrote: > > > > > > > I've been following your thread on the other forum hoping for a > > > > > > solution. > > > > > > I have my example configured just as yours and it's almost working. > > > > > > My > > > > > > problem is that I don't know how to define parameters for the > > > > > > prepared > > > > > > sql statement. For example: > > > > > > > <sql-query name="customLoader"> > > > > > > <load-collection alias="dev" role="Page"/> > > > > > > <![CDATA[SELECT * FROM PAGES WHERE Pages.fkbookId= :id]]> > > > > > > </sql-query> > > > > > > > how is ":id" being set? where is that parameter defined? > > > > > > > Any ideas? > > > > > > > On Apr 2, 12:32 pm, -_- <[email protected]> wrote: > > > > > > > > Anyone have any sample code for populating a bag with a custom SQL > > > > > > > SELECT statement? I need to be able to run a query using the > > > > > > > object's > > > > > > > id and it should return a list of another type of object. > > > > > > > > The mapping code below demonstrates sorta what I need to do but > > > > > > > this > > > > > > > doesn't work. > > > > > > > > Mapping Code: > > > > > > > > <class name="Book" table="Devices"> > > > > > > > <id name="Id" type="Int32" column="Id" access="property"> > > > > > > > <generator class="identity"> > > > > > > > <param name="table">Books</param> > > > > > > > <param name="column">Id</param> > > > > > > > </generator> > > > > > > > </id> > > > > > > > <bag name="PagesInBook" inverse="true"> > > > > > > > <key></key> > > > > > > > <one-to-many class="Pages"/> > > > > > > > <loader query-ref="customLoader"/> > > > > > > > </bag> > > > > > > > </class> > > > > > > > <class name="Page" table="Pages"> > > > > > > > <id name="Id" type="Int32" column="Id" access="property"> > > > > > > > <generator class="identity"> > > > > > > > <param name="table">Pages</param> > > > > > > > <param name="column">Id</param> > > > > > > > </generator> > > > > > > > <property name ="BookId" column="fkBookId"/> > > > > > > > </id> > > > > > > > </class> > > > > > > > <sql-query name="customLoader"> > > > > > > > <load-collection alias="dev" role="Page"/> > > > > > > > <![CDATA[SELECT * FROM PAGES WHERE Pages.fkbookId= :id]]> > > > > > > > </sql-query> > > > > > > > > FOR MORE INFO you can look my forum post here: > > > >http://forum.hibernate.org/viewtopic.php?t=995589 > > > > > > > > Thanks- Hide quoted text - > > > > > > - Show quoted text - > > > > -- > > > Fabio Maulo- Hide quoted text - > > > > - Show quoted text -- Hide quoted text - > > > - Show quoted text - --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
