这里双向多多关系如何写?求理顺思路

   阅读
这里双向多多关系怎么写?求理顺思路
模型:客户、订单、客房、日程



第一个流程:
客人提交订单,形成一个订单对象,订单对象包含了客房对象、客户对象、日程对象。

现在拟定:

客房对象

public class Room
{
private long id;

private String name; // 房型名称

private Float price; // 挂牌价
private Float realPrice; // 现售价格

private int breakfast; // '1':'含早餐','0':'无早餐'

private String info; // 简介


客户对象


public class Customer
{
private long id;

private String realName;
private int gender; // '1':'男','0':'女'

private String identity; // 用户身份证号
private String nationality; // 用户国籍
private String address;

private String phone;
private String email;


日程对象


public class Schedule
{
private int id;

private Date orderDate;

private Date beginDate;

private Date endDate;







这些比较理顺,相应的hbm也已经建立。



问题就是现在的【订单对象】:


public class Book
{
private int id;

private Room room; // 客房

private Customer customer; // 客人信息

private Schedule schedule; // 日程


hbm不是很清楚该怎么去写,思路是有点的:
就是用多对多关系的中间表当做订单表。
但是客房不能删(酒店各类房型总量就那多),客人信息不能删(宾客史资料),日程有可能会去清除(日程超过若干年限的资料可以删除,日程在第二阶段开发时候可能会和人员调动发生关系,日程除了和客房对象发生关系外,还会和餐饮订桌发生关系,会和会议安排发生关系。)




以上是现在自写程序的第一个流程,卡到订单这里了。





==========================================================================================

一个订单可能包含多个客户,住2个人就需要两个客人信息,所以订单的客人信息我稍后会改为集合。


跳出流程看外面。

一个顾客会包含多个订单,一个订单同样会包含多个顾客。(这里只针对客房讲,不要多考虑餐饮会议订单)







==============================================================

所以我在想这里是自己漏知识点了,不会写这个hbm文件,还是建模错了。


两个对象多对多关系我会写,但是三个对象多对多关系怎么写,准确说怎么形成一个中间表
表结构类似这样的:

中间表ID \客房表外键ID \客人信息外键ID \日程外键ID 








=======================================================================
但是我又不觉得我错,因为在写的时候我又发现当客房对象和日程对象协作时候可以实现控制每天房务工作这个业务(就是比如双人间一共20间,1号够20间时候就不能出售了,2号过了12点后重新恢复到20间)

------解决方案--------------------
网上这样的例子很多啊,都可以参考的。
帮你找了两个:
http://ryxxlong.iteye.com/blog/626416
http://www.blogjava.net/wujun/archive/2006/04/08/39956.html
------解决方案--------------------
建议你看看hibernate文档最后的最佳实践,不建议使用多对多的,除非必要!
------解决方案--------------------
个人觉得完全没有必要配置这种关联关系。在存在关联关系的表中只保存彼此的id就可以了,需要用到的时候在根据id去获取关联的记录即可。
另外6楼说有违hibernate的学习宗旨,这个真心没有。说真的,项目中是怎么简单快捷怎么来,如果你用hibernate反而比不用它更快更好,那你为什么非要用它呢,就因为你在项目中用了hibernate吗?工具是为了提高效率。就好比小明和小张两家相距10米元,彼此都有车,难道说就因为有车,所以必须开车去吗?
阅读