Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ERRO SQL COM SPRINGMVC AJUDA!

.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: TESTE

Estou tentando fazer uma buscar no HSQL, mas sempre da esse erro (utilizo o Spring MVC)

A tabela Teste foi criada, mas mesmo assim fala que não encontra sei lá, alguém pode me ajudar ?

Código para gera a TABELA:

@Autowired
    private DataSource ds;                                                                                // (Depedência) Lembrando que a criação desse POOL de CONEXÃO foi criado no CONTEINER do SPRING MVC (spring-context.xml)


    @RequestMapping("/tabelas")
    public String geraBanco() throws SQLException{

        try (Connection connection = ds.getConnection()) {

            PreparedStatement st1 = connection.prepareStatement("DROP TABLE teste if exists");            // Destroi a tabela 'produtos' se JÁ EXISTE
            st1.execute();                                                                                    // Execute = Executa o SQL(Querie) e retorna boolean

            PreparedStatement st2 = connection.prepareStatement("CREATE TABLE teste (id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, descricao VARCHAR(50), preco DOUBLE, quantidade INTEGER, vencimento BOOLEAN, dataVencido DATETIME);");
            st2.execute();    //                                                           |______________________________________________________|
                            //                                                                                    |-> Cria um ID gerado automaticamente a cada INSERÇÃO, e indica que é a CHAVE PRIMÁRIA

            // TABELA USUARIOS
            PreparedStatement st33 = connection.prepareStatement("drop table usuarios if exists");
            st33.execute();

            PreparedStatement st22 = connection.prepareStatement("CREATE TABLE usuarios (login VARCHAR(255),senha VARCHAR(255));");
            st22.execute();

            PreparedStatement st3 = connection.prepareStatement("INSERT INTO usuarios (login, senha) values ('fk', '123');");
            st3.execute();


        } catch (SQLException e) {
            e.printStackTrace();    
        }


        return "infraTabela";
    }

Arquivo SPRING-CONTEXT


    <context:component-scan base-package="br.com.fktec" />
    <mvc:annotation-driven />
    <mvc:default-servlet-handler/>                                                                                                                    <!-- Aqui permite o uso das ANOTAÇÕES para o SpringMVC -->

                                                                                                                                                            <!-- (OLHAR INFO AJAX) = Indica para o SpringMVC que nem toda requisição de buscar arquivos em determinadas pastas é com ele. -->


    <!-- FAZ A PERMISSAO DO USO DO INTERCEPTOR P/ SPRING MVC -->
<!--    <mvc:interceptors>
        <bean class="br.com.fktec.interceptor.AutorizadorInterceptor" />                                                                             Local onde fica a classe utilizada para INTERCEPTOR 
         <bean class="br.com.caelum.contas.interceptor.ConnectionInterceptor" />     
    </mvc:interceptors>
-->


    <bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
        <property name="url" value="jdbc:hsqldb:file:teste.db"/>                                                                                    <!-- file:"nome do banco de dados" em arquivo em vez de LOCALHOST-->
        <property name="username" value="teste"/>
        <property name="password" value=""/>
    </bean>


    <!-- Indica para ao springMVC o local onde será os "return" dos métodos referenes ao RequestMapping-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>



</beans>

CÓDIGO DE BUSCA NO HSQL


// LEMBRANDO: Os métodos estão sendo fechados automaticamente com o TRY (Devido ao implements AUTOCLOSABLE)
    public List<Produto> listaDAO() throws SQLException{

        try(Connection c = ds.getConnection()){
            List<Produto> produtos = new ArrayList<Produto>(); 

                try(PreparedStatement stmt = c.prepareStatement("select * from teste")){
                    try(ResultSet rs = stmt.executeQuery()){                                                        // executeQuery = Retorna um RESULTSET

                        while(rs.next()){
                            produtos.add(buscaProdutoPorId(rs));
                        }


                    }

                    return produtos;
                }catch (SQLException e) {
                 e.printStackTrace();
                 throw new RuntimeException(e);
                }

        }

    }


// CRIA UM PRODUTO PARA BUSCA
    public Produto buscaProdutoPorId(ResultSet rs) throws SQLException{

        Produto produto = new Produto();
        produto.setId(rs.getLong("id"));
        produto.setDescricao(rs.getString("descricao"));
        produto.setPreco(rs.getDouble("preco"));
        produto.setQuant(rs.getInt("quantidade"));
        produto.setVencimento(rs.getBoolean("vencimento"));

        // CONVERTENDO O DATE DO SQL EM CALENDAR (Para ser aceito no MODEL)
        Calendar dataVencimento = Calendar.getInstance();                                                // NÃO SE PODE DAR NEW EM UM "CALENDAR" por isso é utilizado o "getInstance" que retorna um CALENDAR com o dia/hora ATUAL
        dataVencimento.setTime(rs.getDate("dataVencido"));                                                // setTime Converte em Calendar, enquanto GetTime converte para DATE
        produto.setDataVencido(dataVencimento);

        return produto;
    }
1 resposta
solução!

Oi Frank, a exception indica que está dando um problema de permissão do usuário... talvez na pilha de erro tem uma indicação de linha que o erro é disparado, se quiser, posta aqui. Tenta, a partir dessa linha, começar a olhar para ver se acha algo também.