Thank you David, I found that I'm using lift-1.0. After i changed to 1.1 snapshot, it works well now.
thanks On Aug 26, 5:32 am, David Pollak <[email protected]> wrote: > PreCache works as expected. > > Here's the data model: > > class RoomChoice extends LongKeyedMapper[RoomChoice] with IdPK { > def getSingleton = RoomChoice > object name extends MappedPoliteString(this, 512) > object price extends MappedInt(this){ > override def defaultValue = 0 > } > > } > > object RoomChoice extends RoomChoice with LongKeyedMetaMapper[RoomChoice] > > class User extends LongKeyedMapper[User] with IdPK { > def getSingleton = User > object account extends MappedPoliteString(this, 10) > object roomChoice extends MappedLongForeignKey(this, RoomChoice) > > } > > object User extends User with LongKeyedMetaMapper[User] > > And here's the test: > > for { > i <- 1 to 50 > } { > User.create.roomChoice(RoomChoice.create.name("Fog "+i).saveMe).save > } > > User.findAll(PreCache(User.roomChoice)).foreach{ > u => if (!u.roomChoice.cached_?) error("Failed "+u) > } > > User.findAll().foreach{ > u => if (u.roomChoice.cached_?) error("Failed "+u) > } > > val rooms = > User.findAll(PreCache(User.roomChoice)).flatMap(_.roomChoice.obj) > println("Rooms "+rooms) > > I'm enclosing code the demonstrate the functionality. Please let us know if > there's something missing. > > Thanks, > > David > > > > On Mon, Aug 24, 2009 at 9:16 PM, koji <[email protected]> wrote: > > > Oops, so sorry for pasting wrong part. > > And sorry i didnt show my model's code > > my code is as below > > > class RoomChoice extends LongKeyedMapper[RoomChoice] with IdPK { > > def getSingleton = RoomChoice > > object travel extends MappedLongForeignKey(this, Travel) > > object name extends MappedPoliteString(this, 512) > > object price extends MappedInt(this){ > > override def defaultValue = 0 > > } > > } > > class User extends LongKeyedMapper[User] with IdPK { > > def getSingleton = User > > object travel extends MappedLongForeignKey(this, Travel) > > object account extends MappedPoliteString(this, 10) > > object roomChoice extends MappedLongForeignKey(this, > > RoomChoice) > > } > > > val users = User.findAll(By(User.travel, travelId),PreCache > > (User.roomChoice), OrderBy(User.id, Ascending)) > > > thank you > > > On Aug 25, 6:40 am, Derek Chen-Becker <[email protected]> wrote: > > > Maybe I'm missing something, but you're telling Mapper to pre-cache > > > User.roomChoice, but then you're accessing User.fromPlace. Are those two > > > fields related somehow? > > > > Derek > > > > On Mon, Aug 24, 2009 at 12:25 AM, koji <[email protected]> wrote: > > > > > Hi all, > > > > I want to avoid n+1 problem > > > > so i try to write my code as > > > > val users = User.findAll(PreCache(User.roomChoice), By(User.travel, > > > > travelId)) > > > > and i saw the sql generated only once for querying roomChoice. > > > > but when i using the > > > > u.fromPlace.obj, it always become Empty(u.fromPace has correct value) > > > > > thanks > > -- > Lift, the simply functional web frameworkhttp://liftweb.net > Beginning Scalahttp://www.apress.com/book/view/1430219890 > Follow me:http://twitter.com/dpp > Git some:http://github.com/dpp > > precache.tgz > 7KViewDownload --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" 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/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
