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

5 respostas
S

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!

5 Respostas

R

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

S

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

Obrigado!

R

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

Obrigado!

Poste a sua solução!

S

Sim Senhor! :smiley:

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

K

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:
@SuppressWarnings("unchecked")
	public List<Servico> 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();
	}
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:

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;
	}

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.

Criado 9 de maio de 2009
Ultima resposta 18 de jan. de 2010
Respostas 5
Participantes 3