Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BaseDao Hibernate 
:(
    Опции темы
4epT
Дата 13.8.2011, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Добрый вечер! Делаю 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
PM MAIL   Вверх
Shaggie
Дата 13.8.2011, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 2
Всего: 72



Добавь в аннотацию
Код

abstract="true"



--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
4epT
Дата 14.8.2011, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Cпасибо) помогло! А можешь объяснить почему так получилось ? Зачем тут делать этот бин абстрактным ?
PM MAIL   Вверх
Stolzen
Дата 14.8.2011, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Цитата(4epT @  14.8.2011,  12:51 Найти цитируемый пост)
Cпасибо) помогло! А можешь объяснить почему так получилось ? Зачем тут делать этот бин абстрактным ? 

Чтобы он не инициализировался в контейнере спринговом (он не может создать экземпляр абстрактного класса)


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
4epT
Дата 14.8.2011, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Хорошо, а почему он абстрактный ? класс является абстрактным если у него хотя бы один метод абстрактный )) а у меня там таких методов нет )) 

или он абстрактный потому что там используется шаблонные классы T ?
PM MAIL   Вверх
Stolzen
Дата 14.8.2011, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Он абстрактный потому что у вас он так объявлен
Цитата(4epT @  13.8.2011,  22:33 Найти цитируемый пост)
public abstract class BaseDaoImpl<T extends Serializable> extends HibernateDaoSupport
        implements BaseDao<T> {




--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
4epT
Дата 14.8.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



блин) копипастил и не заметил .... спасибо!))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.