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

我正在开发一个应用程序,允许管理公司中的候选人,为此我使用 spring-boot,为了选择掌握这种技术(Techno)的员工,我使用了请求JPQL。


那么,如何通过技术找到候选人呢?


在我的项目中我使用了这段代码:


1 - 类candidat.java


@Entity

public 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类


@Entity

public 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-存储库:


@Repository

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

    }

森栏
浏览 114回答 2
2回答

天涯尽头无女友

您可以在 JpaRepository 中声明以下方法(也删除 @Query,它不是必需的)。List<Candidat> findDistinctByTechnoNomTechno(String nomTechno);同样在 Techno.java 中,您应该添加 @Column 注释并将其与数据库模式映射。我不确定您是否故意粘贴了实体的不完整代码。如果不是,您的实体不正确。您应该按如下方式创建 setter/getter&nbsp;private String nomTechno;@Column(name = "NOM_TECHNO")public String getNomTechno() {&nbsp; &nbsp; return nomTechno;}public void setNomTechno(String nomTechno){&nbsp; &nbsp;this.nomTechno = nomTechno;}对实体中的所有变量执行上述操作。

侃侃尔雅

您不需要@Query为此添加显式内容,如果您有正确的方法名称,Spring 数据可以制定查询代替@Query("SELECT&nbsp;DISTINCT&nbsp;e&nbsp;FROM&nbsp;Candidat&nbsp;e&nbsp;INNER&nbsp;JOIN&nbsp;e.Techno&nbsp;t") List<Candidat>&nbsp;findByTechno(String&nbsp;nomTechno);尝试这个List<Candidat>&nbsp;findDistinctByTechno_NomTechno(String&nbsp;nomTechno);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java