uuussseeennn 2011-07-22 08:36
浏览 272
已采纳

hibernate有两个一对多的Set时怎么写hbm

有两个类,Course和Student,其中Student里面有两个放Course的Set:
class Course
{
...
};
class Student
{
private Set goodCourseSet;
private Set badCourseSet;
...
};

[b]问题描述:[/b]
如果Student里只有一个Course的Set,底层Course表只要加一列StudentID属性就可以了,但现在Student对应了两个Course集,仅仅加一列StudentID属性肯定已经区分不出来到底对应哪个Course集了,所以底层表结构要变,这样hbm文件肯定也要变,但我不知该怎么变。

[b]目前已有的分析:[/b]
下面是我猜想出来的一种写法,由于需要区分出某Student的Course是good还是bad,需要在Course表中增加两个字段,studentID和isGood,isGood的值就是用来区分不同CourseSet的,我下面写的只是表示个大概意思,其中[color=red]value[/color]只是希望用来区分是哪个Set,也许实际当中不存在这个属性。


























  • 写回答

3条回答 默认 最新

  • chenli348105874 2011-07-22 13:30
    关注

    [code="java"]


    [/code]
    set 可以有个where的限制条件

    不过我觉得很奇怪 你为什么一定要用2个set呢
    你完全可以这样

    [code="java"]
    class Student
    {
    private Set courseSet;
    ...
    };

    [/code]
    [code="java"]
    class Course
    {
    private int type //good 或者 bad
    ...
    };

    [/code]
    而且很明显
    course 和 student 应该是 many to many 的
    所有你最好又张中间表比如
    [code="java"]
    class CourseStudent{
    private Student;
    private Course;
    private type;
    }
    [/code]
    你想找student的bad course 用这个
    select c.Course from CourseStudent c where c.type='bad'

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分 合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备