2017-06-19 37 views
0

我有兩個實體在@ManyToMany關係中,我希望通過它們的ID鏈接它們。休眠@ManyToMany有2個不必要的列

A User可以是許多經理Task s和Task可以有一個或多個經理,非常簡單。

所以我定義我的實體具有以下屬性:

@Entity 
@Table(name = "task") 
public class TaskEntity { 
    @Id 
    @Column(unique = true, name="task_id") 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinTable(name = "user_task") 
    private Set<UserEntity> validators = new HashSet<>(0); 

    // Getters & setters  
} 

而且

@Entity 
@Table(name = "\"user\"") 
public class UserEntity { 
    @Id 
    @Column(unique = true, name = "user_id") 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinTable(name = "user_task") 
    private Set<TaskEntity> tasksToValidate = new HashSet<>(0); 

    // Getters & setters 
} 

Hibernate的自動生成我的表,以及由於某種原因user_task有列:的的ID UserEntity,管理者的ID,TaskEntity的ID和要管理的任務的ID。但正如你所看到的,這些值是相同的值。

我該如何告訴Hibernate我只希望保留UserEntity的ID和TaskEntity的ID?

+0

嘗試使用'mappedBy'對孩子邊 – solomkinmv

+0

孩子一邊爲'TaskEntity'因爲它是由用戶管理的?我應該映射'user_id'? – Christopher

+1

這取決於你的業務邏輯,但對我來說你是對的 – solomkinmv

回答