JQuery + Vraptor3 + Criteria (RESOLVIDO)

2 respostas
ViniciusNaka

Boa tarde Galera.

Estou desenvolvendo uma busca com JQuery + Vraptor3 + Criteria e no método do DAO estou com um problema. É que não estou conseguindo pegar os retornos, pois consta o erro…

Caused by: org.hibernate.QueryException: could not resolve property: colaborador.nome of: voxage.com.br.entidades.PontuacaoFunc

Abaixo meu método e minhas classes para entendimento…

Meu método DAO…

public List<PontuacaoFunc> getBusca(String nome) {
		Criteria criteria = session.createCriteria(PontuacaoFunc.class);
		criteria.add(Restrictions.like("colaborador.nome", '%'+nome+'%')); // isso não deveria funcionar ?
		List<PontuacaoFunc> pontuados = criteria.list();
		return pontuados;
}

Minha classe PontuacaoFunc…

@Entity
@Table(name="pontuacao_func")
public class PontuacaoFunc implements Serializable{

	private static final long serialVersionUID = 3214100040938150076L;

	@Id
	@GeneratedValue
	@Column(name="id_pont_func")
	private Integer idPontuacaoFunc;
	
	@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	@JoinColumn(name="id_tipo_pontuacao", referencedColumnName="id_tipo_pontuacao")
	private TipoPontuacao tipoPontuacao;
	
	@Column(name="motivo")
	private String motivo;
	
	@Column(name="valor")
	private Integer valor;
	
	@Column(name="data_pont")
	private Date data;
	
	@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	@JoinColumn(name="id_func_pont", referencedColumnName="id_func")
	private Funcionario colaborador;
	
	@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	@JoinColumn(name="id_gestor_pont", referencedColumnName="id_func")
	private Funcionario gestor;
	
	@Column(name="mes")
	private Integer mes;

      //getters e setters

E a minha classe Funcionario

@Entity
@Table(name="funcionario")
public class Funcionario implements Serializable{
	
	private static final long serialVersionUID = -1776195358793377493L;

	@Id
	@GeneratedValue
	@Column(name="id_func")
	private Integer idFuncionario;
	
	@Column(name="nome")	
	private String nome;

	@Column(name="email")
	private String email;
	
	@Column(name="gestor")
	private Boolean tipoFuncionario;
			
	@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	@JoinColumn(name="id_func_usuario", referencedColumnName="id_usuario")
	private Usuario usuario;
	
	@ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	@JoinColumn(name="id_func_depto", referencedColumnName="id_depto")
	private Departamento depto;	
	
	@Column(name="bit_excluir")
	private Boolean excluir;

       //getters e setters

Desde já agradeço a ajuda.

Abs

2 Respostas

Lucas_Cavalcanti

pra poder fazer isso vc precisa fazer um join antes (createAlias):

Criteria criteria = session.createCriteria(PontuacaoFunc.class);  
criteria.createAlias("colaborador", "c")
        criteria.add(Restrictions.like("c.nome", '%'+nome+'%')); // isso não deveria funcionar ?  
        List<PontuacaoFunc> pontuados = criteria.list();  
        return pontuados;
ViniciusNaka

Muito Obrigado Lucas, mais uma vez me ajudando! hehe

Abs

Criado 27 de maio de 2011
Ultima resposta 30 de mai. de 2011
Respostas 2
Participantes 2