为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过jpql中的属性(name_techno)查找数据

如何通过jpql中的属性(name_techno)查找数据

森栏 2023-10-13 15:17:47
我正在开发一个应用程序,允许管理公司中的候选人,为此我使用 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;

}

对实体中的所有变量执行上述操作。


查看完整回答
反对 回复 2023-10-13
?
侃侃尔雅

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);


查看完整回答
反对 回复 2023-10-13
  • 2 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信