我正在開發一個應用程序,允許管理公司中的候選人,為此我使用 spring-boot,為了選擇掌握這種技術(Techno)的員工,我使用了請求JPQL。那么,如何通過技術找到候選人呢?在我的項目中我使用了這段代碼:1 - 類candidat.java@Entitypublic class Candidat { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "candidat_id") private int id; private String nom; private String prenom; private String ville; private int numTel; private String mail; private String pseudo; private String roleCible; private String typeContrat; private String villeRecherchee; @OneToMany(mappedBy="candidat") private List<Techno> techno; @Temporal(TemporalType.DATE) private Date date; @OneToMany private List<SecteurActivites> secteurActivites; public Candidat() { // TODO Auto-generated constructor stub }2-Techno.java類@Entitypublic class Techno { @Id @GeneratedValue @Column(name = "techno_id") private int id ; private String nomTechno; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "candidat_id", nullable = false) @OnDelete(action = OnDeleteAction.CASCADE) @JsonIgnore private Candidat candidat; public Techno() { // TODO Auto-generated constructor stub } /** * @param nomTechno * @param candidat */ public Techno(String nomTechno, Candidat candidat) { super(); this.nomTechno = nomTechno; this.candidat = candidat; }3-我的候選人控制器@GetMapping(value = "/GetAllCandidats/{nomTechno}")public List<Candidat> afficherCandidat(@PathVariable ("nomTechno") String nomTechno){ return candidatdao.findByTechno(nomTechno);}4-存儲庫:@Repositorypublic interface CandidatDao extends JpaRepository <Candidat, String>{ List<Candidat> findByDate(Date date); @Query("SELECT DISTINCT e FROM Candidat e INNER JOIN e.Techno t") List<Candidat> findByTechno(String nomTechno); }
2 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
您可以在 JpaRepository 中聲明以下方法(也刪除 @Query,它不是必需的)。
List<Candidat> findDistinctByTechnoNomTechno(String nomTechno);
同樣在 Techno.java 中,您應該添加 @Column 注釋并將其與數據庫模式映射。
我不確定您是否故意粘貼了實體的不完整代碼。如果不是,您的實體不正確。您應該按如下方式創建 setter/getter
private String nomTechno;
@Column(name = "NOM_TECHNO")
public String getNomTechno() {
return nomTechno;
}
public void setNomTechno(String nomTechno){
this.nomTechno = nomTechno;
}
對實體中的所有變量執行上述操作。

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
您不需要@Query
為此添加顯式內容,如果您有正確的方法名稱,Spring 數據可以制定查詢
代替
@Query("SELECT DISTINCT e FROM Candidat e INNER JOIN e.Techno t") List<Candidat> findByTechno(String nomTechno);
嘗試這個
List<Candidat> findDistinctByTechno_NomTechno(String nomTechno);
添加回答
舉報
0/150
提交
取消