+4  A: 

The first thing I would suggest you is using IList instead of List for mapping the localCalendarGroups association in your domain classes. This will enable lazy loading the collection. And here's the mapping file for the UserVO class:

<class name="UserVO" table="tb_users">
    <id name="id" column="id">
        <generator class="native" />
    </id>
    <property name="name" />
    <property name="pass" />
    <property name="level" />
    <property name="email" />

    <bag name="localCalendarGroups" table="user_localCalendarGroup">
        <key column="userID" />
        <many-to-many class="LocalCalendarGroupVO" column="calID" />
    </bag>
</class>

And the corresponding class definition:

public class UserVO
{
    public virtual int id { get; set; }
    public virtual string name { get; set; }
    public virtual string pass { get; set; }
    public virtual string email { get; set; }
    public virtual string level { get; set; }
    public virtual IList<LocalCalendarGroupVO> localCalendarGroups { get; set; }
}
Darin Dimitrov
Thanks for this. Unfortunately I keep getting a mapping exception though. I'll have a play around and see if I can't solve it. Once again thanks.