2017-06-09 83 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方法中的列表。