2017-02-06 18 views
0

この例のシナリオでは出席DTOとワーカーDTOがあります。このコンテキストのワーカーは部門別に区切られており、ワーカーは1つの部門内にしか存在できません。 Worker {id='123-123-123', department='a'}は、両方とも同じIDを共有しているにもかかわらず、Worker {id='123-123-123', department='b'}とは異なることに注意することが重要です。Hibernate:マッピングの繰り返し列

私はこのキークラスは以下、Workeriddepartmentの両方を必要とするのDTOの間で共有されiddepartment

public class IdAndDepartmentPK implements Serializable { 

    private String id; 
    private String department; 

    public IdAndDepartmentPK() {} 
    ... 
} 

によって機能を試してみて、分離するために以下のクラスを設定しているが、二つのDTOがあります問題を引き起こしています。

​​

WorkerDtoAttendencetDtoの知識を持っている必要はありませんが、AttendencetDtoは、WorkerDtoへのアクセスとそれに含まれる他のデータを持っている必要がありません。

Hibernateは、workerIdのようなフィールドは、insert = "false" update = "false"とマッピングする必要があると言っていますが、これを行うにはこれらの値をデータベースに永続化できません。

私は基本的にこれらのフィールドを利用可能にしたいと同時に、WorkerDtoも利用可能にしたいと考えています、これは可能ですか?

+1

なぜ@Column private String workerId;が必要なのですか? workerDtoによってエンティティをリンクすることができます。 – ByeBye

+0

しかし、もし私がテーブル 'attendences'を持っているとしたら、' worker_id'カラムでは、そのカラムをdtoに指定せずにそこにデータを挿入するでしょうか? – Dominic

+0

外部キーに接続がある場合は、単に「workerDto」を設定することができます。トランザクションが終了すると、エンティティがリンクされます。 – ByeBye

答えて

1

@Column private String workerId;は既に関係によってWorkerDtoにマップされているため、削除する必要があります。

メソッドを使用してAttendencetDtoの中で関係を作成して保存するだけの場合は、それを保存してください。取引終了後、あなたはDBにあなたの関係があります。

+0

正しい答えがあるので、この回答を受け入れてください! – Dominic

関連する問題