这个问题困扰了我很久,也翻阅了一些资料但还是没有解决!问题是这样的:
主表:orders,列(oid,订单名)
主表:books,列(bid,书名)
子表:items,列(oid,bid,订单明细的列)现在我想把“订单名”,“书名”,订单明细的所有列同时查出,在数据库用内联是实现的!
但我要保存到java的实体类中那我的实体类要怎样设计呢??
我想了一下:
1.如果orders实体类的属性是(oid,订单名,List<items>)
    books实体类的属性是(bid,书名,List<items>)
    items实体类的属性是(订单明细的所有列)
这样不能实现!因为orders和books没有关系,不能把三个表的数据保存起来2.如果orders实体类的属性是(oid,订单名)
    books实体类的属性是(bid,书名)
    items实体类的属性是(orders,books,订单明细的所有列)
如果这样设计是可以实现,但不合理!这样的话就变成了items里面包含orders和books了!(items变成了主表了)
在此先感谢大家~谢谢!

解决方案 »

  1.   

    所谓概念上的主表和子表,关系很大么?就按照关系来也没啥:
    orders实体类的属性是(oid,订单名,List<items>)
    items实体类的属性是(books,订单明细的所有列)
    books实体类的属性是(bid,书名)
    实在你觉得烦,直接为这种查询结果定义一个专用实体类,连嵌套关系都不要了直接搞定也行。
      

  2.   

    楼上说的很多啊,java不是一直都提倡面向对象编程吗,你如果这样想就很清楚了你items类中按照正常的想法是属性定义为orders类的id,books类的id这样你就会觉得和数据库表中的关系是对应的,但是从对象的角度来看items类中的属性都是对象,所以items类的2个属性你换成对象更加的顺应面向对象编程的理念,数据模型
    和实体模型2者本身就不是严格对应的,我也说不好啊,表达能力不行,大概就是这个意思吧.
    就例如:一个表对应一个实体如果另外一个表有个外键引用这个表 在数据库模型中你就是一个id来表示对一个表的引用,但是到了实体模型就是类来表述,实体之间的关系反应到数据库和java代码中是不同