Erro ao carregar lista

6 respostas
J
boa tarde, galera quando tento carregar minha lista da o seginte erro: erro durante carregamento de dados: could not execute query. loadData: onde carrego minha lista
public class UsuarioController extends GridController implements GridDataLocator {

    private UsuarioListar usuarioListar = null;
    private Dao dao = null;
    private Usuario currentUser;
    private Usuario usuario;
    private UsuarioBO usuariobo = null;

    public UsuarioController(Dao dao) {
        this.dao = dao;
        this.usuariobo = new UsuarioBO(dao);
        this.usuarioListar = new UsuarioListar(dao, this);
        MDIFrame.add(usuarioListar, true);
    }

    public UsuarioController(Dao dao, Usuario currentUser) {
        this.dao = dao;
        this.usuariobo = new UsuarioBO(dao);
        this.currentUser = currentUser;
        usuarioListar = new UsuarioListar(dao, this, currentUser);
        MDIFrame.add(usuarioListar, true);
    }

    /**
     * Callback method invoked when the user has double clicked on the selected
     * row of the grid.
     *
     * @param rowNumber selected row index
     * @param persistentObject v.o. related to the selected row
     */
    @Override
    public void doubleClick(int rowNumber, ValueObject persistentObject) {
        usuario = (Usuario) persistentObject;
        new UsuarioDetalhesController(usuarioListar, usuario.getId().toString(), dao, currentUser);
    }

    /**
     * Callback method invoked to load data on the grid.
     *
     * @param action fetching versus: PREVIOUS_BLOCK_ACTION, NEXT_BLOCK_ACTION
     * or LAST_BLOCK_ACTION
     * @param startPos start position of data fetching in result set
     * @param filteredColumns filtered columns
     * @param currentSortedColumns sorted columns
     * @param currentSortedVersusColumns ordering versus of sorted columns
     * @param valueObjectType v.o. type
     * @param otherGridParams other grid parameters
     * @return response from the server: an object of type VOListResponse if
     * data loading was successfully completed, or an ErrorResponse onject if
     * some error occours
     */
    @Override
    public Response loadData(
            int action,
            int startIndex,
            Map filteredColumns,
            ArrayList currentSortedColumns,
            ArrayList currentSortedVersusColumns,
            Class valueObjectType,
            Map otherGridParams) {
        try {
            //String baseSQL = "from br.com.system.model.Usuario as Usuario";
            Criteria sa = dao.getSession().createCriteria(Usuario.class, "u");
            sa.setProjection(Projections.projectionList()
                    .add(Projections.property("u.id").as("id"))
                    .add(Projections.property("u.descricao").as("descricao"))
                    //.add(Projections.property("u.situacao").as("situacao"))
                    .add(Projections.sqlProjection(" IF(this_.situacao='A','Ativo','Inativo') AS situacao", new String[] {"situacao"}, new Type[] {Hibernate.STRING})));
            sa.setResultTransformer(new AliasToBeanResultTransformer(Usuario.class));
            
            Session sess = dao.getSession(); // obtain a JDBC connection and instantiate a new Session

            Response res = HibernateUtils.getBlockFromCriteria(
                    filteredColumns, 
                    currentSortedColumns, 
                    currentSortedVersusColumns, 
                    action, 
                    startIndex, 
                    50, 
                    sa,
                    sess);
           

           /* Response res = HibernateUtils.getBlockFromQuery(
                    action,
                    startIndex,
                    50, // block size...
                    filteredColumns,
                    currentSortedColumns,
                    currentSortedVersusColumns,
                    valueObjectType,
                    baseSQL,
                    new Object[0],
                    new Type[0],
                    "Usuario",
                    dao.getSession().getSessionFactory(),
                    sess);*/
  
            return res;
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ErrorResponse(ex.getMessage());
        }
    }

    public Response loadData(Usuario usuario) {
        try {
            Usuario aux = usuariobo.findUsuario(usuario);
            if (aux != null) {
                return new VOResponse(aux);
            } else {
                return new ErrorResponse("Usuário/Senha não cadastrado!");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ErrorResponse(ex.getMessage());
        }
    }

    /**
     * Method invoked when the user has clicked on delete button and the grid is
     * in READONLY mode.
     *
     * @param persistentObjects value objects to delete (related to the
     * currently selected rows)
     * @return an ErrorResponse value object in case of errors, VOResponse if
     * the operation is successfully completed
     */
    @Override
    public Response deleteRecords(ArrayList persistentObjects) throws Exception {
        try {
            for (int i = 0; i < persistentObjects.size(); i++) {
                usuario = (Usuario) persistentObjects.get(i);
                usuariobo.remove(usuario);
            }
            return new VOResponse(true);
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ErrorResponse(ex.getMessage());
        }
    }
}

6 Respostas

R

Ja fez o debug ? verifica sem ele pelo menos consegue montar o sql.

J

já fiz o debug,
mas da erro quando ele tenta monta o sql

R

em qual linha especificamente ?

J

Response res = HibernateUtils.getBlockFromCriteria( filteredColumns, currentSortedColumns, currentSortedVersusColumns, action, startIndex, 50, sa, sess);

nesa linha

J

erro

Hibernate: select this_.id as y0_, this_.descricao as y1_, IF(this_.situacao='A', 'Ativo', 'Inativo') AS situacao from usuario this_ order by this_.situacao asc limit ? SQL Error: 0, SQLState: 42883 ERRO: função if(boolean, unknown, unknown) não existe org.hibernate.exception.SQLGrammarException: could not execute query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.doList(Loader.java:2223) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283) at org.openswing.swing.util.server.HibernateUtils.getBlockFromCriteria(HibernateUtils.java:1337) at br.com.system.controller.UsuarioController.loadData(UsuarioController.java:97) at org.openswing.swing.table.client.Grids.loadData(Grids.java:1794) at org.openswing.swing.table.client.Grids.access$800(Grids.java:58) at org.openswing.swing.table.client.Grids$LoadDataThread.run(Grids.java:4064) Caused by: org.postgresql.util.PSQLException: ERRO: função if(boolean, unknown, unknown) não existe at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) at org.hibernate.loader.Loader.getResultSet(Loader.java:1787) at org.hibernate.loader.Loader.doQuery(Loader.java:674) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.doList(Loader.java:2220) ... 10 more

J

alguem?

Criado 24 de janeiro de 2013
Ultima resposta 31 de jan. de 2013
Respostas 6
Participantes 2