0

現在、私は小さなプロジェクトに取り組んでおり、非常に単純なジョブを送信しており、これをデータベースに保存することに取り組んでいます。この場合を考えてみましょう:

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/だと思ったので、これを見つけましたが、そうではないようです

4

1 に答える 1

1

リンク先の記事で説明されているように1対1ではなく、1対多の関係が必要です。

あなたはあなたが関係をどのように機能させたいかについて明確な考えを持っています、それは素晴らしいです。あなたが言ったことに基づいて、私は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()のデフォルトのコンストラクターパッケージをプライベートスコープにして、Hibernateが引き続き使用できるようにすることもできますが、呼び出し元は使用できません。

于 2012-09-18T15:27:42.697 に答える