没有条件的JPA连接查询

时间:2016-11-01 13:43:33

标签: spring-data-jpa jpa-2.0 jpa-2.1

我有三个表Client,Task和TaskClient TaskClient将客户端作为外键 下面是豆子:

@Entity
@Table(name="TaskClient")
public class TaskClient implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id", unique=true, nullable=false)
    private Integer id;

    @ManyToOne
    @JoinColumn(name="client", unique=false)
    private Client client;

    @ManyToOne
    @JoinColumn(name="task", unique=false)
    private Task task;
}

以下是TaskClientDAO:

@Repository
public interface TaskCliebtDAO extends JpaRepository<TaskClient, Serializable> {

    @Query("")
    public List<ClientBean> findClientAvailableForTask(Integer taskId);
}

在这里,我想搜索与给定模板ID无关的所有客户端。

例如:

Client                  Task                 TaskClient
=========              ======              ===================
id     name          id     name          id      client     task
-----  ------       -----  -----         -----   --------   ------
1       c1            1     t1             1         1         1      
2       c2            2     t2             
3       c3

如上所述,我有3个客户c1,c2和c3。同样地,我有2个任务t1和t2。 现在TaskClient正在保存Task和Client的映射。在示例中,客户端ID 1与任务ID 1相关联 现在我想要一个查询,我将给出taskid,作为回报,我希望所有可用的客户端都与TaskClient表中的给定任务ID无关。
如果我将任务ID设为1,那么我应该得到c2和c3 如果我给任务ID为2,那么我应该得到c1,c2和c3。

注意:Client和Task bean没有对TaskClient bean的任何引用

请帮忙。 提前谢谢。

0 个答案:

没有答案