Добрый вечер! Делаю BaseDao ... есть вот такой интерфейс: | Код | package com.dao;
import java.io.Serializable; import java.util.List;
import org.hibernate.criterion.Criterion; import org.hibernate.criterion.ProjectionList;
public interface BaseDao<T extends Serializable> extends Serializable { void delete(T entity);
T get(Serializable id); List<T> list();
List<T> listOrderedAsk(String propertyName);
List<T> listOrderedDesc(String propertyName); void merge(T entity); void refresh(T entity); void saveOrUpdate(T entity); }
|
Есть класс который реализует данный интерфейс: | Код | package com.dao.impl;
import java.io.Serializable; import java.util.List;
import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.transaction.annotation.Transactional;
import com.dao.BaseDao;
public abstract class BaseDaoImpl<T extends Serializable> extends HibernateDaoSupport implements BaseDao<T> { /** * */ private static final long serialVersionUID = -787835217993731067L; @SuppressWarnings("unchecked") final Class entityClass;
@SuppressWarnings("unchecked") public BaseDaoImpl(Class entityClass) { this.entityClass = entityClass; }
@Transactional(readOnly = false) public void delete(T entity) { getHibernateTemplate().delete(entity); getHibernateTemplate().flush(); }
@SuppressWarnings("unchecked") public T get(Serializable id) { return (T) getHibernateTemplate().get(entityClass, id); }
@SuppressWarnings("unchecked") public List<T> list() { return getSessionFactory().getCurrentSession().createCriteria(entityClass).list(); }
@SuppressWarnings("unchecked") public List<T> listOrderedAsk(String propertyName) { Criteria criteria = getSession().createCriteria(entityClass); criteria.addOrder(Order.asc(propertyName));
return criteria.list(); }
@SuppressWarnings("unchecked") public List<T> listOrderedDesc(String propertyName) { Criteria criteria = getSession().createCriteria(entityClass); criteria.addOrder(Order.desc(propertyName));
return criteria.list(); }
@Transactional(readOnly = false) public void merge(T entity) { getHibernateTemplate().merge(entity); getHibernateTemplate().flush();
}
public void refresh(T entity) { getHibernateTemplate().refresh(entity); }
@Transactional(readOnly = false) public void saveOrUpdate(T entity) { getHibernateTemplate().saveOrUpdate(entity); getHibernateTemplate().flush();
}
}
|
Есть xml в котором объявлен этот baseDao: | Код | <bean id="baseDao" class="com.dao.impl.BaseDaoImpl" > <property name="sessionFactory" ref="sessionFactory" /> </bean>
|
При запуске Томкета ругается вот таким: | Код | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'baseDao' defined in ServletContext resource [/WEB- INF/classes/config/spring/beans/beans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.dao.impl.BaseDaoImpl]: Is it an abstract class?; nested exception is java.lang.InstantiationException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4681) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5184) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5179) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:680)
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.dao.impl.BaseDaoImpl]: Is it an abstract class?; nested exception is java.lang.InstantiationException at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:129)
|
По коду естественно есть множество наследников от этого класса ... В проекте пытаюсь связать JSF + Spring + Hibernate. В чем я ошибся ?) Это сообщение отредактировал(а) 4epT - 13.8.2011, 21:33
|