2016-07-15 4 views
0

Я пытаюсь зарегистрировать новый отдел, и я получаю эту ошибкувложенного исключения org.hibernate.HibernateException: Нет сеансы найдены для текущей нити контроллера addDepartment

HTTP Status 500 - Request processing failed; nested exception is org.hibernate.HibernateException: No Session found for current thread 

Я гарантирующее это добавляется к моему XML файл и ошибка по-прежнему сохраняется

<tx:annotation-driven transaction-manager="hibernateTransactionManager"/> 
    <!-- Scans within the base package of the application for @Component classes to configure as beans --> 
    <context:component-scan base-package="com.xxx.account.*"/> 

это метод управления, который бросает исключение

@RequestMapping(value = "/addDepartment", method = RequestMethod.GET) 
    public ModelAndView addCategory(@ModelAttribute("command") Department department, 
      BindingResult result) { 
     Map<String, Object> model = new HashMap<String, Object>(); 
     model.put("department", departmentService.getDepartments()); 
     return new ModelAndView("addDepartment"); 
    } 

это полная StackTrace ошибки, которые у меня возникли, когда я пытаюсь получить доступ метод контроллера

org.hibernate.HibernateException: No Session found for current thread 
    org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:106) org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) m.chuma.account.dao.DepartmentDaoImpl.getDeparments(DepartmentDaoImpl.java:31)com.chuma.account.service.impl.DepartmentServiceImpl.getDepartments(DepartmentServiceImpl.java:28) 

это отдел дао с аннотацией аннотацию @Transactional

@Service("departmentService") 
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 
public class DepartmentServiceImpl implements DepartmentService{ 


    @Autowired 
    private DepartmentDao departmentDao; 

    @Transactional(propagation = Propagation.REQUIRED, readOnly = false) 
    public void addDepartment(Department department) { 
     departmentDao.addDepartment(department); 
    } 

Все, кажется, в порядке от моего отладки до сих пор, но ошибка по-прежнему сохраняется, когда я пытаюсь получить доступ к методу контроллера, чтобы вернуть представление. Что может быть неправильным или что мне не хватает?

+0

Вы хотите, чтобы убедиться, что у вас есть что-то вроде '<собственность имя =«current_session_context_class»> нить' в hibernate.cfg.xml или '<подпирать ключ =«hibernate.current_session_context_class»> нить' в определение 'SessionFactoryBean' в вашей конфигурации Spring. –

+0

У меня нет файла hibernate.cfg.xml – Blaze

+0

У вас есть набор свойств Hibernate где-нибудь, либо в конфигурационном файле Spring XML, либо в классе Java, аннотированном с '@ Configuration'? –

ответ

0

Почему вы не распространяете распространение = Распространение.SUPPORTS для вашего определения @Transactional? Это означает, что метод будет работать в транзакционном контексте только в том случае, если уже есть транзакция, открытая с того места, где вы вызываете метосы.

То же самое происходит, если вы используете распространение. ПРЕДПОЛАГАЕТСЯ?

+0

это решило мою проблему – Blaze

Смежные вопросы