Erro Override no GenericDAO

12 respostas
F

Bom dia pessoal,

Venho mais uma vez solicitar o grande apoio de vocês.

Estou desenvolvendo um projeto utilizando servlet, jsp e hibernate e estou com problemas nas anotações @Override

Quando vou compilar qualquer arquivo do projeto aparece a seguinte mensagem de erro.

Compiling 22 source files to C:\projetos_java\bookStore\build\web\WEB-INF\classes
C:\projetos_java\bookStore\src\java\com\romafa\dao\GenericDAO.java:25: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\GenericDAO.java:31: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\GenericDAO.java:37: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\GenericDAO.java:43: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\GenericDAO.java:50: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\GenericDAO.java:55: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\impl\ClienteDAOImpl.java:27: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\impl\ClienteDAOImpl.java:33: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\impl\TipoLivroDAOImpl.java:29: method does not override a method from its superclass
        @Override
C:\projetos_java\bookStore\src\java\com\romafa\dao\impl\TipoLivroDAOImpl.java:35: method does not override a method from its superclass
        @Override       
C:\projetos_java\bookStore\src\java\com\romafa\dao\impl\TipoLivroDAOImpl.java:46: method does not override a method from its superclass
        @Override       
11 errors
C:\projetos_java\bookStore\nbproject\build-impl.xml:392: The following error occurred while executing this line:
C:\projetos_java\bookStore\nbproject\build-impl.xml:213: Compile failed; see the compiler error output for details.
FALHA NA CONSTRUÇÃO (tempo total: 1 segundo)

Não consegui ter a inteligência necessária para resolver isto.

Estou desenvolvendo no NetBeans 6.1, porém o projeto estava sendo feito no eclipse.

Aproveitando, gostaria também de saber se os meus métodos para salvar e deletar da classe TipoLivroDAOImpl estão corretos.

Devido o problema das anotações @Override não estou conseguindo testar o meu projeto.

Por favor pessoal preciso entregar este projeto neste sábado e qualquer ajuda de de vocês será de grande apoio.

Segue a estrutura do meu projeto

DAO.java

package com.romafa.dao;

import java.io.Serializable;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Session;

public interface DAO<T, ID extends Serializable> {

    public T search(Serializable t);

    public T load(Integer id);

    public void save(T t);

    public void delete(T t);

    public List<T> list();

    public void merge(T t);

    public void update(T t);
}

GenericDAO.java

package com.romafa.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;


public class GenericDAO<T, ID extends Serializable> implements DAO<T, ID> {

	private Session session;
	private Class<T> persistentClass;

	public GenericDAO(Session session, Class<T> persistentClass) {
	    this.session = session;
	    this.persistentClass = persistentClass;
	}

	@SuppressWarnings("unchecked")
	public T search(Serializable id) {
	   return  (T) session.load(persistentClass, id);
	}

	@Override
	public T load(Integer id) {
		session.load(persistentClass, id);
		return null;
	}

	@Override
	public void save(T t) {
		session.save(t);

	}

	@Override
	public void delete(T t) {
		session.delete(t);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<T> list() {
		Criteria c = session.createCriteria(persistentClass);

		return c.list();
	}

	@Override
	public void merge(T t) {
		session.merge(t);
	}

	@Override
	public void update(T t) {
		session.update(t);

	}
}

TipoLivroDAO.java

package com.romafa.dao;

import java.util.List;

import org.hibernate.Session;

import com.romafa.bean.TipoLivroBean;


public interface TipoLivroDAO extends DAO<TipoLivroBean, Integer>  {

	List<TipoLivroBean> buscaTodosTipoLivros();
           
           public TipoLivroBean salvaTipoLivro(String t);
           
           public TipoLivroBean deleteTipoLivro(String t);
           
}

TipoLivroDAOImpl.java

TipoLivroServlet.java

package com.romafa.controller;

import java.io.IOException;
import java.io.Serializable;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.romafa.dao.GenericDAO;
import com.romafa.bean.TipoLivroBean;
import com.romafa.utils.HibernateUtil;
import java.io.PrintWriter;

/**
 *
 * @author Fabiano
 */
public class TipoLivroServlet extends HttpServlet {
   
 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
        } finally { 
            out.close();
        }
    } 

    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
        
         response.setContentType("CONTENT_TYPE");
         PrintWriter out = response.getWriter();
         
         RequestDispatcher rd;
         
         Session sessao = HibernateUtil.getSession(); // Abrindo uma sessao
	          
         TipoLivroBean tipoLivroBean = new TipoLivroBean();
                  
         String tipoLivro = request.getParameter("tipNome");
         
         tipoLivroBean.setTipNome(tipoLivro);
         
         GenericDAO<TipoLivroBean, Integer> tipoLivroDAO = new GenericDAO<TipoLivroBean, Integer>(sessao, TipoLivroBean.class);
                
            tipoLivroDAO.save(tipoLivroBean);

            rd = request.getRequestDispatcher("/listaTipoLivro.jsp");
            rd.forward(request, response);

           
            sessao.close(); // Fechando a sessao
       
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

12 Respostas

drsmachado
C:\projetos_java\bookStore\src\java\com\romafa\dao\GenericDAO.java:25: method does not override a method from its superclass  
        @Override

Quando este tipo de mensagem é lançado, significa que não houve alteração no método. Ele se mantém o mesmo.
Ou retira-se esta anotação ou altera-se o método.

alias

Arranque os Overrides, apenas.

Confesso que nunca entendi porque as vezez (ao menos no meu caso) o Eclipse inclui o Override em métodos da interface…mas arranque-os e nao terá mais o problema.

drsmachado

alias:
Arranque os Overrides, apenas.

Confesso que nunca entendi porque as vezez (ao menos no meu caso) o Eclipse inclui o Override em métodos da interface…mas arranque-os e nao terá mais o problema.

Não vi nenhum @Override na interface, apenas na Class GenericDAO

F

Pessoal, muito obrigado pela respostas.

drsmachado, então eu tenho que coloca a anotação também na interface TipoLivroDAO?

Valeu pela ajuda cara

drsmachado

Fabiano Almeida:
Pessoal, muito obrigado pela respostas.

drsmachado, então eu tenho que coloca a anotação também na interface TipoLivroDAO?

Valeu pela ajuda cara

Não, não.

Para ficar mais claro.
Override = sobrescrever.
Quando você informa à JVM que um trecho de código (método) foi sobrescrito (@Override), algo nele precisa ser alterado. Se ele permanecer inalterado ou for a primeira implementação de um método de uma classe abstrata, a JVM irá se perder.

romarcio

drsmachado:
alias:
Arranque os Overrides, apenas.

Confesso que nunca entendi porque as vezez (ao menos no meu caso) o Eclipse inclui o Override em métodos da interface…mas arranque-os e nao terá mais o problema.

Não vi nenhum @Override na interface, apenas na Class GenericDAO

Acho que ele quis dizer quando você implementa a interface, o eclipse coloca as anotações @Override nos métodos implementados na sub-classe.

drsmachado

romarcio:
drsmachado:
alias:
Arranque os Overrides, apenas.

Confesso que nunca entendi porque as vezez (ao menos no meu caso) o Eclipse inclui o Override em métodos da interface…mas arranque-os e nao terá mais o problema.

Não vi nenhum @Override na interface, apenas na Class GenericDAO

Acho que ele quis dizer quando você implementa a interface, o eclipse coloca as anotações @Override nos métodos implementados na sub-classe.


Nesta interpretação, tudo bem.
Mas que o texto dele deixa dúvidas, isso deixa.

romarcio

drsmachado:
romarcio:
drsmachado:
alias:
Arranque os Overrides, apenas.

Confesso que nunca entendi porque as vezez (ao menos no meu caso) o Eclipse inclui o Override em métodos da interface…mas arranque-os e nao terá mais o problema.

Não vi nenhum @Override na interface, apenas na Class GenericDAO

Acho que ele quis dizer quando você implementa a interface, o eclipse coloca as anotações @Override nos métodos implementados na sub-classe.


Nesta interpretação, tudo bem.
Mas que o texto dele deixa dúvidas, isso deixa.

Eu me liguei nisso por que aconteceu comigo uma das vezes que usei o eclipse, dai me lembrei.

drsmachado

Bom, na minha concepção de sub-classe, ela terá de implementar todos os métodos da classe abstrata. Isto significa que eles serão sobrescritos.

romarcio

Você está certo.

Porém na interface não criamos um método e sim apenas uma assinatura de um método.
E esse método só será implementado na na classe que implementar a interface e a partir dai que ele vai poder ser subscrito em sub-classes que herdam essa implementação.

drsmachado

Sendo assinatura ou método, a primeira Class não abstrata da sequência irá implementar TODOS os métodos das superclasses abstratas que vieram antes.
Isso, para mim, é a possibilidade de herança múltipla…

alias

romarcio:
drsmachado:
alias:
Arranque os Overrides, apenas.

Confesso que nunca entendi porque as vezez (ao menos no meu caso) o Eclipse inclui o Override em métodos da interface…mas arranque-os e nao terá mais o problema.

Não vi nenhum @Override na interface, apenas na Class GenericDAO

Acho que ele quis dizer quando você implementa a interface, o eclipse coloca as anotações @Override nos métodos implementados na sub-classe.

Foi isso que quis dizer, embora de maneira dúbia :oops:. Agradeço a correção.

Criado 26 de maio de 2011
Ultima resposta 26 de mai. de 2011
Respostas 12
Participantes 4