gpt4 book ai didi

java - JPQL 连接表

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:34 24 4
gpt4 key购买 nike

我有一个协作者和干预表。

协作者(协作者 ID、协作者名称、协作者地址)Intervention (id_Interv, Nom_Interv, End_date, Id_collab)(“实体响应包含协作者类型对象)

@Entity
public class Collaborateur implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idcollaborateur;
private String nomCollaborateur;
...
}

@Entity
public class Intervention implements Serializable{
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idInterv;
@Temporal(TemporalType.DATE)
private Date dateEndInterv;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "idCollaborateur")
private Collaborateur collaborateur;
...
}

我如何选择所有协作者(列表)目前没有任何干预..即没有干预或所有干预的 dateEndInterv 小于 datetimenow 的协作者

我希望已经说清楚了,我的文章:

SELECT c
FROM Collaborateur c LEFT JOIN c.Intervention i
WHERE (i.dateFinIntervention<?1 or i.dateFinIntervention IS NULL)

我从事 Spring 数据工作

最佳答案

您需要在 Collaborateur 和 Intervention 之间建立新的关系,例如 @OneToMany:

@Entity
public class Collaborateur implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idcollaborateur;
private String nomCollaborateur;

@OneToMany
private Set<Intervention> interventions;
...
}

因此,您的 JPQL 将是:

SELECT c
FROM Collaborateur c
LEFT JOIN c.interventions i
WHERE (i.dateEndInterv < ?1 OR i.dateEndInterv IS NULL)

关于java - JPQL 连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com