Hql Hibernate

Fala feras

eu montei uma query no meu DAO para retornar algumas informações através da data que foi digitada

acontece que quando eu deixo a linha onde vai pegar a data que o usuario digitou não retorna nenhuma informação

e quando eu comento a linha retorna varios informações tentei rodar a query na mão e tb não foi mais quando

add a função LEFT na query ela retornou os dados corretos mas quando coloco a alteração na minha query Hql no

DAO da erro na função LEFT alguém sabe como faço a alteração na minha query Hql ?

Quando add essa linha da erro na minha query Hql do DAO

sql.append("and LEFT(s.dtDevolucaoSupervisor,10)= '" + new SimpleDateFormat("yyyy-MM-dd").format(data) + "'" );

Quando add essa linha não retorna nenhuma informação

sql.append("and s.dtDevolucaoSupervisor = '" + new SimpleDateFormat("yyyy-MM-dd").format(data) + "'" );
StringBuilder sql = new StringBuilder("from UsuarioTO a inner join fetch a.associacoesSupervisor as s ");
sql.append("where a.codBarras like 'S-%' and a.estado = 1 ");
// aqui e onde eu add a linha para pegar a data

Post as classes UsuarioTO e a classe desse relacionamento: associacoesSupervisor

a parte da classe usuarioTO

@Enumerated(EnumType.ORDINAL)
	@Column(name="ID_SITUACAO_CADASTRAL")
	private SituacaoCadastral estado;
	
	@OneToMany(mappedBy="usuarioCadastro", fetch=FetchType.LAZY)
	@OrderBy("dtCadastroSistema")
	private Set<AssociacaoTO> associacoesCadastro = new HashSet<AssociacaoTO>();
	
	
	@OneToMany(mappedBy="usuarioSupervisor", fetch=FetchType.LAZY)
	@OrderBy("dtCadastroSupervisor")
	private Set<AssociacaoTO> associacoesSupervisor = new HashSet<AssociacaoTO>();
	
	@OneToMany(mappedBy="usuarioOperador", fetch=FetchType.LAZY)
	@OrderBy("dtCadastroOperador")
	private Set<AssociacaoTO> associacoesOperador = new HashSet<AssociacaoTO>();
	

aqui associacaoTO com a coluna dtDevolucaoSupervisor


	@Column(name="DT_DEVOLUCAO_SUPERVISOR")
	private Date dtDevolucaoSupervisor;

Faz com setParameter… Não precisa utilizar DateFormat…

...
sql.append("and s.dtDevolucaoSupervisor = :data'" );
Query query = session.createQuery(sql.toString());
query.setParameter("data", data);

então brother fiz assim mais esta dando erro ainda tem algo que fiz de errado ?

StringBuilder sql = new StringBuilder("from UsuarioTO a inner join fetch a.associacoesSupervisor as s ");
			sql.append("where a.codBarras like 'S-%' and a.estado = 1 ");	
			sql.append("and s.dtDevolucaoSupervisor = :'data'" );  
			Query query = session.createQuery(sql.toString());
			query.setParameter("data", data);
			resultado = query.list();

erro

ERROR [STDERR] org.hibernate.hql.ast.QuerySyntaxException: expecting IDENT, found ''data'' near line 1, column 173 [from com.oesia.parkingrio.usuario.to.UsuarioTO a inner join fetch a.associacoesSupervisor as s where a.codBarras like 'S-%' and a.estado = 1 and s.dtDevolucaoSupervisor = :'data']

sim… Tire as aspas do :data.

:qualquerCoisa é apenas um identificador… semelhante ao ?.

StringBuilder sql = new StringBuilder("from UsuarioTO a inner join fetch a.associacoesSupervisor as s ");  
sql.append("where a.codBarras like 'S-%' and a.estado = 1 ");     
sql.append("and s.dtDevolucaoSupervisor = :data" );    
Query query = session.createQuery(sql.toString());  
query.setParameter("data", data);  
resultado = query.list();

ai Brother finalmente deu certo eu alterei e vou postar aqui para a galera que tiver o mesmo problema

valeu pela ajuda

StringBuilder sql = new StringBuilder("from UsuarioTO a inner join fetch a.associacoesSupervisor as s ");
			sql.append("where a.codBarras like 'S-%' and a.estado = 1 ");	
			sql.append("and s.dtDevolucaoSupervisor BETWEEN :dtInicial AND :dtFinal" );
			Query query = session.createQuery(sql.toString());
			Date dtInicial = (Date)data.clone();
			dtInicial.setHours(00);
			dtInicial.setMinutes(00);
			dtInicial.setSeconds(00);
			Date dtFinal = (Date)data.clone();
			dtFinal.setHours(23);
			dtFinal.setMinutes(59);
			dtFinal.setSeconds(59);
			query.setParameter("dtInicial", dtInicial);
			query.setParameter("dtFinal", dtFinal);
			resultado = query.list();