boa tarde pessoal
estou sofrendo com uma coisa muito chata do spring. o proxy
é o seguinte, tenho minhas classes assim:
DAO.java
public interface DAO<T> {
T create(T newInstance) throws Exception;
T read(Long id);
List<T> readAll();
void delete(Long id);
}
e uma classe que implementa o DAO, a MidiaDAO
public class MidiaDAO extends HibernateDaoSupport implements DAO<Midia>{
@Transactional
public Midia create(Midia newInstance) throws Exception {
getHibernateTemplate().saveOrUpdate(newInstance);
return newInstance;
}
@Override
public Midia read(Long id) {
Midia m = getHibernateTemplate().get(Midia.class, id);
return m;
}
tenho uma classe abstrata, o Controlador:
public abstract class Controlador<T> {
public abstract DAO<T> getDAO();
e uma implementação: o ControladorMidia
public class ControladorMidia extends Controlador<Midia> {
public ControladorMidia() {}
@SuppressWarnings("unchecked")
public DAO<Midia> getDAO() {
return (DAO<Midia>) SpringORMApplicationContextUtils.getBean("midiaDAO");
}
o problema é que eu tenho meu DAOs declarados no applicationContext.xml-hiberante.xml
<bean id="midiaDAO" class="br.com.athus.dao.MidiaDAO" >
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
até aqui legal, mas agora, eu preciso de um método chamado getByName, no dao MidiaDAO, mas como o ControladorMidia retorna um objeto DAO e não MidiaDAO, esse método não fica visivel no meu ControladorMidia.
quando eu troco a declaração do método no Controlador midia pela seguinte:
public MidiaDAO getDAO() {
return (MidiaDAO) SpringORMApplicationContextUtils.getBean("midiaDAO");
}
o Spring lança uma exception, dizendo que eu estou tentando fazer um cast de $Proxy19 para MidiaDAO :S
tentei carregar o dao da seguinte forma:
SpringORMApplicationContextUtils.getBean("&midiaDAO");
, onde de acordo com o que eu li, ele retorna o bean e não proxy, mas não mudou nada, mesmo erro
alguem tem alguma luz?
abraços