案例:
主表:用户User
属性:
private int uid;
private String name;
private String pid;
private Set<Room> rooms=new HashSet<Room>();
table user(UID,NAME,PID,URID)子表:住房Room
属性:
private int rid;
private String address;
private double price;
table room(RID ADDRESS PRICE)主表与子表之间是单向关联关系
问题:
在主表user中使用URID来表达用户与住房的一对多关系
而在子表room中只有住房应有属性对应的字段
SQL建表语句和对应的*.hbm.xml内容怎么写呢

解决方案 »

  1.   

    应该是在Room表中设一个uid作为user表的外键,Room类中添加private User user;
    User.hbm.xml中添加:
    <set name="rooms"><key column="uid"/><one-to-many class="Room"/></set>
    Room.hbm.xml中添加:
    <many-to-one name="user" column="uid" class="User" not-null="true"/>
      

  2.   

    我想把这个做成单向关联
    而且我想避免在Room中使用外键会造成同一个住房多条记录的状况
    比如住房1去年被用户1购买,Room表中就会添加一条记录
    今年用户1将住房1售出,用户2又购买了住房1,
    Room表中又会添加一条住房1的记录
    不同的是它是被用户2购买的
    我想把Room表设计成住房统计表而不是既统计住房数量又统计销售情况表
    而User表只统计房屋购买者的购买情况
    也就是说只要买过就能在数据库中体现