[RESOLVIDO]Problema com query JPQL

Bom dia Pessoal,
Estou com problemas pra efetuar essa query, está ocorrendo o seguinte log abaixo.
Alguém poderia me ajudar?
Meu relacionamento de Vacancies para Recruiter é @ManyToOne.
Obrigado

Query q = em.createQuery(“select v from Vacancies v INNER JOIN v.Recruiter r”
+ “where r.segmento =:paramsegmento and v.id_rec = r.id_rec”).setParameter
(“paramsegmento”, segmento);
return q.getResultList();

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: r near line 1, column 81 [select v from br.com.vacancies.entity.Vacancies v INNER JOIN v.Recruiter rwhere r.segmento =:paramsegmento and v.id_rec = r.id_rec]

rwhere

mete um espaço aí e vê o que acontece.

select v from br.com.vacancies.entity.Vacancies v INNER JOIN v.Recruiter r where r.segmento =:paramsegmento and v.id_rec = r.id_rec

mudou o erro…rs
esse erro já tinha acontecido anteriormente também, mas não consegui detectar a causa.

java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: Recruiter of: br.com.vacancies.entity.Vacancies [select v from br.com.vacancies.entity.Vacancies v INNER JOIN v.Recruiter r where r.segmento =:paramsegmento and v.id_rec = r.id_rec]

posta sua classe Vacancies, por favor

tem que ser o mesmo nome do atributo da classe. Lá está com esse R maiúsculo msm?

segue a classe Vacancies

@Entity public class Vacancies implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id_vac;

@Temporal(TemporalType.DATE)
@Column(nullable=false)
private Calendar data;

@Column(length=800)
private String descricao;

@ManyToOne
@JoinColumn(name="id_rec")
private Recruiter recruiter;


public Vacancies(Integer id_vac, Calendar data, String descricao, Recruiter rec){
	this.id_vac=id_vac;
	this.data=data;
	this.descricao=descricao;
	this.recruiter=rec;
}

public Vacancies(){
	
}

public Integer getId_vac() {
	return id_vac;
}

public void setId_vac(Integer id_vac) {
	this.id_vac = id_vac;
}

public Calendar getData() {
	return data;
}

public void setData(Calendar data) {
	this.data = data;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public Recruiter getRecruiter() {
	return recruiter;
}

public void setRecruiter(Recruiter recruiter) {
	this.recruiter = recruiter;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((data == null) ? 0 : data.hashCode());
	result = prime * result + ((descricao == null) ? 0 : descricao.hashCode());
	result = prime * result + ((id_vac == null) ? 0 : id_vac.hashCode());
	result = prime * result + ((recruiter == null) ? 0 : recruiter.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Vacancies other = (Vacancies) obj;
	if (data == null) {
		if (other.data != null)
			return false;
	} else if (!data.equals(other.data))
		return false;
	if (descricao == null) {
		if (other.descricao != null)
			return false;
	} else if (!descricao.equals(other.descricao))
		return false;
	if (id_vac == null) {
		if (other.id_vac != null)
			return false;
	} else if (!id_vac.equals(other.id_vac))
		return false;
	if (recruiter == null) {
		if (other.recruiter != null)
			return false;
	} else if (!recruiter.equals(other.recruiter))
		return false;
	return true;
}

@Override
public String toString() {
	return "Vacancies [id_vac=" + id_vac + ", data=" + data + ", descricao=" 
              + descricao + ", recruiter=" + recruiter + "]";
}

}

Tente v.recruiter

select v from br.com.vacancies.entity.Vacancies v INNER JOIN v.recruiter r where r.segmento =:paramsegmento and v.id_rec = r.id_rec

acho que o próximo erro vai ser aqui v.id_rec = r.id_rec, mas vamos ver.

deu o mesmo erro…
=/

deu esse erro

java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: id_rec of: br.com.vacancies.entity.Vacancies [select v from br.com.vacancies.entity.Vacancies v INNER JOIN v.recruiter r where r.segmento =:paramsegmento and v.id_rec = r.id_rec]

Revendo sua classe, pq vc está fazendo esse inner join?? Em relacionamentos …ToOne a entidade já traz o join automático, pois o FetchType padrão é EAGER. Não é preciso replicar na query.

select v from Vacancies v where v.recruiter.segmento = :paramsegmento

Creio que esta jpql tenha o mesmo resultado que vc deseja.

o erro que tinha dito mesmo…
sabe o que pode ser?

Aeee!!
Deu certo!!
era isso mesmo o que disse Raphael.
Sou iniciante em JPQL ainda, entendi o que disse.
Muito obrigado pela força!!

tmj :wink: