现在,我正在处理一个小型项目,提交非常简单的作业,并且正在将其保存到数据库中。考虑这种情况:

public class Myjob{
   int id;
   int name;
   MyJobConfiguration configuration;
   //etc
}

public class MyJobConfiguration{
     //bunch of configuration fields
}


如您所见,我将这些配置放在单独的类中,这意味着我想添加/更新/删除与我的工作对象无关的配置。

我的目标是先创建配置,然后在创建作业时为其分配一个现有配置。

因此,一个以上的作业可以使用同一配置对象。

我该怎么做?我已经有了一个如何在数据库中进行操作的想法,我可以将配置的主键连接到myJob类中的外键,但是在休眠状态下似乎有所不同。有没有人举例说明如何做到这一点?

我发现这是因为我以为是http://www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example-annotation/,但似乎没有

最佳答案

您想要一对多的关系,而不是链接文章中所述的一对一关系。

您已经很清楚要如何建立关系,这很好。根据您的发言,我将使MyJobConfiguration看起来像这样:

public class MyJobConfiguration {
    @OneToMany(mappedBy = "configuration")
    private List<MyJob> jobs;

    //bunch of configuration fields
}


和MyJob看起来像这样:

public class Myjob{
    int id;
    int name;

    @ManyToOne
    @JoinColumn(name = "configuration_id", nullable = false)
    MyJobConfiguration configuration;
    //etc
}


我什至可能倾向于给MyJob一个带有MyJobConfiguration实例的构造函数,并使MyJob()默认构造函数的package-private范围限定,以便Hibernate仍然可以使用它,但调用者不能。

07-21 19:55