I'm no expert at Castle ActiveRecord but I guess that doesn't matter..
NHibernate uses a 1st level cache/identity map. When, you within a session, fetches the same object multiple times you are guaranteed to get the same instance back. In your case, this means that this assert should pass...
Assert.AreSame(
Room.FindAllByProperty(typeof(Room), "HotelId", HotelId).First(),
Room.FindAllByProperty(typeof(Room), "HotelId", HotelId).First())
However, the db query itself will be called everytime you make the call. This is true for any query except session.Get and session.Find (what these are called in Castle ActiveRecord I don't know).
If you want to start the queries themself you need to enable 2nd level caching. There is plenty of information about this on the internet.