【问题标题】:Parent child relationship hibernate父子关系休眠
【发布时间】:2012-09-19 20:11:30
【问题描述】:

我一直在尝试使用 hibernate 重新创建父/子场景,我以此为例(对 hibernate 来说非常新):

http://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example-annotation/

我的情况与此类似。我正在开发一个具有一些任务对象的项目,这些任务对象应该是某些任务流对象的一部分。

  • 所以有两个实体任务和任务流。

  • 任务流应该有许多或至少一个任务。

  • 任务表中已经有一些任务,现在我想在任务流表中插入一些条目,以便任务流对象具有任务列表或任务集。

忘了在我原来的问题中提及:

  • 任务可以在许多不同的任务流中

我的任务流看起来像:

class Taskflow{
   int taskflowid;
   String taskflowname;
   List<Task> tasklist;
}

在数据库任务流中有2个字段taskflowidtaskflowname

这就是任务的样子:

class Task{
 //many properties/fields
}

考虑到这个例子,与我在谷歌上搜索的例子相比,Task 与 TaskFlow 之间总是存在某种关系。那有必要吗?我只想让任务流引用任务。我认为这一切都错了吗?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    如果您不声明关系,它将是简单的成员变量。为了让hibernate明白你有一对多的关系,你需要在一些.hbmannotation中指定它

    @OneToMany //This for hibernate to understand that you have one to many relationship with Task
    List<Task> tasklist;
    

    内部任务

    @ManyToOne
    Taskflow taskFlow
    

    记住默认名称将用于生成列名。请参考here上的教程

    【讨论】:

    • 我需要任务流表中的字段吗?
    • 另一端需要填写字段。即@ManyToOneTask 内,这将在Task and Taskflow 之间创建一个映射`
    • 所以您建议我在任务中添加字段,以指定该任务属于哪个任务流?在我的情况下,任务可以在许多不同的任务流中,我忘了在我的问题中提到我现在看到的那个。
    【解决方案2】:

    Hibernate 支持不同基数(一对一、一对多/多对一、多对多)和不同方向性(单向或双向)的关系。

    在您的情况下,您有一个多对多关系,可以是单向的(如果 Task 不需要包含所有 TaskFlows 的集合,它是其中的一部分),也可以是双向的。

    例如,从TaskFlowTask 的单向关系:

    class Taskflow {
        ...
        @ManyToMany
        private List<Task> tasks;
        ...
    }
    

    另请参阅:

    【讨论】:

    • 抱歉忘记添加更多细节,你能看到问题更新吗?在这种情况下你会怎么做?
    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多