我正在开发一个应用程序,允许管理公司中的候选人,为此我使用 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条经验 获得超15个赞
您不需要@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
提交
取消