2010-12-30 13 views
3

こんにちは、私はエンティティのマッピングに問題があります。私はJPA2とHibernateの実装を使用しています。私は私がそれをマッピングし@ManyToManyアノテーションを使用した結合表からのカスケードの削除

http://img204.imageshack.us/img204/7558/przykladd.png

@ManyToManyアノテーションでテーブルを持っていない:

@Entity 
@Table("employee") 
class Employee { 
     @Id 
      @GeneratedValue(strategy = GenerationType.IDENTITY) 
      private Integer id; 

  @Column 
  private String name;  

 @ManyToMany 
  @JoinTable(name = "proj_emp", 
     joinColumns = @JoinColumn(name = "employee_id", referencedColumnName = "id"), 
    inverseJoinColumns = @JoinColumn(name = "project_id", referencedColumnName = "id"),  
             uniqueConstraints = @UniqueConstraint(columnNames = {"employee_id", "project_id"}))  
  private List<Project> projects;                ...} 


@Entity 
@Table("project") 
class Project { 
   @Id 
   @GeneratedValue(strategy = GenerationType.IDENTITY) 
   private Integer id;  

   @Column   
  private String name;     
       
   @Column     
   private Integer budget;         

   @ManyToMany(mappedBy = "projects")      
   private List<Employee> employees;                ...} 

は、今私は私が従業員からレコードを削除すると、テーブルPROJ_EMPから削除カスケードを持っていると思いますが、から何もテーブルプロジェクトを削除することができます。

これを取得する最も良い方法は何ですか?

おかげ Dawid

答えて

3

あなたは、@ OneToMany、ManyToOneにあなたの@ManyToManyを分割して示すように、質問はHibernateのセッションを使用していますが、あなたはJPA EntityManagerを使用することができますhereカスケーディング・スタイルを設定することができます。または、新しいJPA機能@ElementCollection(JPA 2のみ)を使用して、結合したクラスをマップします。方法については、hereを参照してください。 Hibernateの@CollectionOfElementsを@ElementCollectionに置き換えてください。

関連する問題