1

次のテーブルがあります: タグ、従業員、場所。Employee と Location にはさらにタグを付けることができます。これらの関係のために新しいテーブルを作成するのが最善だと思います: employee_tag と location_tag.

JPAを使用してこれを行うにはどうすればよいですか? 今私はこれを手に入れました:従業員クラス:

@OneToMany()
@JoinTable(name="employee_tag", joinColumns={
    @JoinColumn(name="ID_employee", referencedColumnName="ID")
}, inverseJoinColumns={
    @JoinColumn(name="ID_tag", referencedColumnName="ID")
})
private Collection<Tag> tags;

タグクラス:

@ManyToOne()
private Employee employee;

これにより、employee_tag という名前の新しいテーブルが作成されますが、tag にはまだ列 employee_ID があります。タグをこのテーブルにリンクするにはどうすればよいですか?

4

1 に答える 1

2

一方向の1対多の関連付けが必要な場合は、従業員の関連付けをタグクラスに入れる必要はなく、従業員クラスで関連付けを宣言する必要があります。

@Entity
public class Employee {
   @OneToMany()
   @JoinTable(name="employee_tag", joinColumns={
   @JoinColumn(name="ID_employee", referencedColumnName="ID")
   }, inverseJoinColumns={
   @JoinColumn(name="ID_tag", referencedColumnName="ID")
   })
   public Collection<Tag> tags;
   ...
}

@Entity
public class Tag {      
   ...
}

それ以外の場合は、次のように双方向の関連付けを行うことができます。

@Entity
public class Employee {
   @OneToMany(mappedBy="troop")
   public Collection<Tag> tags;
   ...
}

@Entity
public class Tag {
   @ManyToOne
   @JoinColumn(name="employee_fk")
   public Employee employee;
   ...
}

Hibernateアノテーションドキュメントをご覧ください

于 2012-04-22T19:40:26.970 に答える