Erro na query JPA ao fazer cast de integer para text

Pessoal,

Ao executar o metodo abaixo:


   public List<Objeto> findByAny(String parametro) {

        List<Objeto> results = null;

        if (!parametro.equals("")) {

            String stringQuery = "select objeto from Objeto objeto where objeto.label like :label or objeto.descricao like :descricao";

            if(Util.contemSomenteNumeros(parametro)){
                stringQuery += " or cast(objeto.codigoObjeto as text) like :codigoObjeto";
            }
            
            Query query = em.createQuery(stringQuery);

            query.setParameter("label", parametro);
            query.setParameter("descricao", parametro);
            
            if(Util.contemSomenteNumeros(parametro)){
                query.setParameter("codigoObjeto", parametro);    
            }

            results = query.getResultList();

        }

        return results;
    }

ocorre a excecao seguinte na linha abaixo:


   Query query = em.createQuery(stringQuery);

excecao:



Caused by: Exception [EclipseLink-8025] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing the query [select objeto from Objeto objeto where objeto.label like :label or objeto.descricao like :descricao or cast(objeto.codigoObjeto as text) like :codigoObjeto], line 1, column 107: unexpected token [(].
Internal Exception: NoViableAltException(83@[()* loopback of 383:9: (d= DOT right= attribute )*])
	at org.eclipse.persistence.exceptions.JPQLException.unexpectedToken(JPQLException.java:372)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.handleRecognitionException(JPQLParser.java:320)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.addError(JPQLParser.java:246)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.reportError(JPQLParser.java:363)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.pathExprOrVariableAccess(JPQLParser.java:1436)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.arithmeticPrimary(JPQLParser.java:4720)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.arithmeticFactor(JPQLParser.java:4660)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.arithmeticTerm(JPQLParser.java:4546)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.simpleArithmeticExpression(JPQLParser.java:4462)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.arithmeticExpression(JPQLParser.java:4402)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.simpleConditionalExpression(JPQLParser.java:3321)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.conditionalPrimary(JPQLParser.java:3275)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.conditionalFactor(JPQLParser.java:3194)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.conditionalTerm(JPQLParser.java:3103)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.conditionalExpression(JPQLParser.java:3053)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.whereClause(JPQLParser.java:2986)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.selectStatement(JPQLParser.java:380)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.document(JPQLParser.java:281)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.parse(JPQLParser.java:134)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.buildParseTree(JPQLParser.java:95)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:215)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:190)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:142)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:126)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1475)
	... 93 more
Caused by: NoViableAltException(83@[()* loopback of 383:9: (d= DOT right= attribute )*])
	at org.eclipse.persistence.internal.libraries.antlr.runtime.DFA.noViableAlt(DFA.java:159)
	at org.eclipse.persistence.internal.libraries.antlr.runtime.DFA.predict(DFA.java:116)
	at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.pathExprOrVariableAccess(JPQLParser.java:1408)
	... 113 more

Alguem sabe por que e como eu poderia resolver este problema?

se eu mudar o metodo findByAny para:



    public List<Objeto> findByAny(String parametro) {

        List<Objeto> results = null;

        if (!parametro.equals("")) {

            String stringQuery = "select * from objeto where rotulo like ?1 or descricao like ?2";

            if(Util.contemSomenteNumeros(parametro)){
                stringQuery += " or cast(codigo_objeto as varchar(10)) like ?3";
            }
            
            Query query = em.createNativeQuery(stringQuery);

            query.setParameter(1, parametro);
            query.setParameter(2, parametro);
            
            if(Util.contemSomenteNumeros(parametro)){
                query.setParameter(3, parametro);    
            }

            results = query.getResultList();

        }

        return results;
    }

passa a acontecer o seguinte erro:


SEVERE: java.lang.NumberFormatException: For input string: "codigoObjeto"