2015-01-20 2 views
1

Привет, у меня есть небольшая настройка загрузки Spring и проблемы с доступом к моей базе данных.Spring Boot Setup: org.hibernate.HibernateException: No CurrentSessionContext настроен

Это мой установки, начиная с контроллера:

@Controller 
@RequestMapping("/myproject/users") 
public class UserController { 

private static Logger logger = LoggerFactory 
     .getLogger("UserController.class"); 

private UserService userService; 

@Autowired 
public UserController(UserService userService) { 
    this.userService = userService; 
} 
.... 

Это мой DAO он расширяет абстрактный DAO со всеми методами CRUD:

@Repository 
@Transactional 
public class UserDaoImpl<T> extends AbstractDAO<User, Integer> implements 
    UserDao { 

@Autowired 
public UserDaoImpl(SessionFactory sessionFactory) { 
    super(sessionFactory); 
} 

protected Class<User> getEntityClass() { 
    return User.class; 
} 

public User getUserByMail(String email) { 
    User result = null; 
    Criteria criteria = getCriteria(); 
    criteria.add(Restrictions.eq("email", email)); 
    if (criteria.uniqueResult() != null) { 
     result = (User) criteria.uniqueResult(); 
    } 
    return result; 
} 
protected final Session getCurrentSession() { 
    return this.sessionFactory.getCurrentSession(); 
} 

..... 

И, наконец, обслуживание:

@Component 
@Transactional 
public class UserServiceImpl implements UserService { 

private UserDao userDao; 

@Autowired 
public UserServiceImpl(UserDao userDao) { 
    this.userDao = userDao; 
} 


public List<User> getAllUsers() { 
    return this.userDao.findAll(); 
} 
.... 

Вот мои настройки приложения:

spring.datasource.url=jdbc:mysql://10.0.0.15:3306/schema 
spring.datasource.username=test 
spring.datasource.password=test 

# Hibernate 
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect 
spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=create 

# Tomcat 
server.port = 9080 

И это мой Application.java:

@Configuration 
@ComponentScan({"core", "controller"}) 
@EnableAutoConfiguration 
public class Application 
{ 
    public static void main(String[] args) { 
    .... 
    } 
@Bean 
public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) { 
    return hemf.getSessionFactory(); 
} 
.... 

Моя проблема сейчас, что SessionFactory правильно построен, все бобы загружены, но когда мой DAO пытается получить доступ к базе данных я получаю исключение :

«org.hibernate.HibernateException: нет CurrentSessionContext не настроен»

Я искал на Stackoverflow очень много, и выяснили, что проблема заключается в том, что весна не в состоянии открыть CurrentSessionContext. Я могу сделать это вручную, но мне нужна Spring-Boot для обработки моих транзакций. Кто-нибудь признает мою ошибку в настройке?

Я уже пытался придерживаться этого решения: Stackoverflow

Спасибо большое!

ответ

4

Добавление следующих в настройки приложения работали для меня:

spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext 

обратитесь к следующему: No CurrentSessionContext configured

+0

Добро пожаловать на переполнение стека! Пожалуйста, рассмотрите возможность редактирования сообщения, чтобы добавить больше объяснений о том, что делает ваш код, и почему он решит проблему. Ответ, который в основном содержит только код (даже если он работает), обычно не помогает OP понять их проблему. Если объяснение приведено в ссылке, пожалуйста, укажите соответствующие разделы в своем ответе здесь. – SuperBiasedMan

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