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