Я разрабатываю приложение, которое позволяет управлять кандидатами в компании, для этого я использую 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- класс Техно.джава
@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- My CandidatController
@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);
}
5- app.properties
server.port= 9090
spring.jpa.show-sql = true
spring.datasource.url= jdbc:mysql://localhost:3306/database
spring.datasource.username=??
spring.datasource.password=??
spring.jpa.hibernate.ddl-auto=update
Результат в консоли :
"Validation failed for query for method public abstract java.util.List com.avatar.dao.CandidatDao.findByTechno(java.lang.String)!"