2017-06-09 82 views
0

我有兩個實體 -@OneToMany單向獨特元素

@Entity 
class Task { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
} 

@Entity 
class TaskGroup { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @OneToMany 
    private List<Task> tasks=new ArrayList<>(); 
} 

正如你所看到的關係是單向的。我要的是 -

  • 沒有連接表
  • 任務在任務列表應該是唯一的。
  • 我想要在TaskList表上創建映射列。任務表不應該有關於關係的任何線索。

有人能告訴我怎麼能做到這一點?

我正在使用最新的JPA和Hibernate。

+0

我想這樣的 - '@OneToMany(取= FetchType.EAGER) @JoinColumn(name = 「TASK_ID」,可爲空=假,唯一= TRUE) 私人列表任務=新的ArrayList <>(); ' 但是這會在任務表上創建一個task_id列。 –

回答

0

我不認爲jpa可以處理這個沒有連接表。

其實我認爲即使jpa你可以在物體中處理這種行爲。

您應該重寫Task的equals和hashcode方法,並將List更改爲Set在TaskGroup中。

或者您可以檢查TaskGroup的@PrePersist和@PreUpdate方法中的列表。