案例:
主表:用户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内容怎么写呢
我想把这个做成单向关联
而且我想避免在Room中使用外键会造成同一个住房多条记录的状况
比如住房1去年被用户1购买,Room表中就会添加一条记录
今年用户1将住房1售出,用户2又购买了住房1,
Room表中又会添加一条住房1的记录
不同的是它是被用户2购买的
我想把Room表设计成住房统计表而不是既统计住房数量又统计销售情况表
而User表只统计房屋购买者的购买情况
也就是说只要买过就能在数据库中体现
主表:用户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内容怎么写呢
我想把这个做成单向关联
而且我想避免在Room中使用外键会造成同一个住房多条记录的状况
比如住房1去年被用户1购买,Room表中就会添加一条记录
今年用户1将住房1售出,用户2又购买了住房1,
Room表中又会添加一条住房1的记录
不同的是它是被用户2购买的
我想把Room表设计成住房统计表而不是既统计住房数量又统计销售情况表
而User表只统计房屋购买者的购买情况
也就是说只要买过就能在数据库中体现
user(userId, name, ...)
room(roomId, address, ...)
deal(userId, roomId, price, date, ...)
这应该能解决你的问题了吧.
private int rid;
private String address;
private double price;
boolean isBuy;
User user;
table room(RID ADDRESS PRICE)
这样就可以标示出这个用户对同一套房屋到底是买还是卖。对应的XML文件可以用工具生成也可以手写.