Org.hibernate.exception.SQLGrammarException: could not execute query

Fala Galera,

Estou em um projeto usando struts e hibernate, criei uma action que está dando esse erro:

Listar A Receber. org.hibernate.exception.SQLGrammarException: could not execute query


Abaixo a action:

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
		HttpServletResponse response) {
		try {
			removerAtributoSessao(request, ConstantsSession.FINANCEIRO_ARECEBER_LISTA);
			String _searchValue = request.getParameter("searchValue");
			String _searchBy = request.getParameter("ctl00$Content$filterCampoPesquisa_value");
			List<?> _list = new AReceberDAO().getListaAReceber(_searchBy, _searchValue);
			if (_list.size() > 0)
				inserirAtributoSessao(request, ConstantsSession.FINANCEIRO_ARECEBER_LISTA, _list);
			inserirAtributoSessao(request, ConstantsSession.FINANCEIRO_ARECEBER_LISTA + "_searchBy", _searchBy);
			inserirAtributoSessao(request, ConstantsSession.FINANCEIRO_ARECEBER_LISTA + "_searchValue",
				_searchValue);
			return mapping.findForward(WebNavegacao.FWD_SUCCESS);
		} catch (Exception e) {
			log.error("Listar A Receber.", e);
            System.out.println("Listar A Receber. " + e);
			return mapping.findForward(WebNavegacao.FWD_ERROR);
		}
	}

O mapeamento:

<?xml version="1.0"?>
	<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

	<hibernate-mapping package="net.sistema.vo">
		<class name="AReceber" table="tbl_financeiro_areceber">
			<id name="id" column="areceber_id" type="int">
				<generator class="increment"/>
			</id>
			<property name="valor" column="areceber_valor"/>
			<property name="observacoes" column="areceber_observacoes"/>
			<property name="mes" column="areceber_mes"/>
			<property name="ano" column="areceber_ano"/>
			<property name="data" column="areceber_data"/>


			<many-to-one name="membro" class="Membro"
				column="areceber_membro_id" fetch="join"/>

			<many-to-one name="tipoReceita" class="TipoReceita"
				column="areceber_tipo_receita_id" fetch="join"/>

		</class>
	</hibernate-mapping>

Estou desconfiando que possa ser coisa de banco (usando mysql), mas os relacionamentos estão criados.

Alguém pode me ajudar?

Abs!

Nos envie um pedaço da exceção.

Consegui resolver, a dificuldade estava em um campo da tabela (mysql)

Obrigado!

[quote=solucoesweb]Consegui resolver, a dificuldade estava em um campo da tabela (mysql)

Obrigado![/quote]

Poste a sua solução!

Sim Senhor! :smiley:

O campo se chamava “obs” e estava mapeado como “observacoes”

Eae Pessoal, estou com um problema de criteria tb…

Estou com uma aplicação java, com hibernate, banco em postgresql, e pegando uma surra básica com criteria e combos alinhados…

o negócio é o seguinte: estou tentando fazer a seguinte criteria:

@SuppressWarnings("unchecked") public List<Servico> getServicosId(Long id) { Criteria c = session.createCriteria(Servico.class); List<Servico> results = c.createCriteria("programa").add( Restrictions.like("cod_programa", id)).list(); //linha q gera a exception... return results; }

Esse método foi idéia de um colega aqui do GUJ que me ajudou a transformar uma query nessa linguagem acima…

a query era:

[code] @SuppressWarnings(“unchecked”)
public List getServicosByPrograma(Long id) {
Query q = session.createQuery(“select c from "
+ Servico.class.getName()
+ " as c where c.programa.cod_programa like :id”);
q.setParameter(“id”, id);

	return q.list();
}[/code]

Só que me retorna esse erro:

javax.servlet.ServletException: javax.servlet.ServletException: #{unidadeHandler.actionCarregaServicos}: org.hibernate.exception.SQLGrammarException: could not execute query
	br.gov.rr.setrabes.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:26)


javax.servlet.ServletException: javax.servlet.ServletException: #{unidadeHandler.actionCarregaServicos}: org.hibernate.exception.SQLGrammarException: could not execute query
	br.gov.rr.setrabes.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:26)

...

org.postgresql.util.PSQLException: ERRO: operador não existe: bigint ~~ bigint
  Dica: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
  Posição: 317
...
	br.gov.rr.setrabes.dao.ServicoDao.getServicosId(ServicoDao.java:41) // linha q eu marquei acima...

a action:

[code] public void actionCarregaServicos() {
this.setServicos(this.getServicosByPrograma());
}

public List<SelectItem> getServicosByPrograma() {
	Session session = HibernateUtil.currentSession();

	ServicoDao dao = new ServicoDao(session, Servico.class);

	List<Servico> servicos = dao.getServicosId(this.getPrograma()
			.getCod_programa());

	List<SelectItem> items = new ArrayList<SelectItem>(servicos.size());

	for (Servico c : servicos) {
		items.add(new SelectItem(c.getCod_servico(), c.getNome()));
	}

	return items;
}

[/code]

Deve ser algum conflito entre do método com o Postgre, mas como eu sou iniciante em java e quase n tenho conhecimento com PostGre, ainda nao consegui descobrir o q é…
Se alguem puder ajudar, agradeço.