Необходимо реализовать CRUD операции с БД MySQL. Использую Repository для доступа у данным.
private SessionFactory sessionFactory;
public void setSessionFactory(final SessionFactory sf) {
sessionFactory = sf;
}
@Override
public void insert(final ClientEntity object) {
Session session = sessionFactory.getCurrentSession();
session.persist(object);
clientLog.info("Insert " + object);
}
@Override
public void update(final ClientEntity object) {
Session session = sessionFactory.getCurrentSession();
session.update(object);
clientLog.info("Update " + object);
}
@Override
public void remove(final long id) {
Session session = sessionFactory.getCurrentSession();
ClientEntity client = session.load(ClientEntity.class, id);
if (client != null) {
session.delete(client);
}
clientLog.info("Delete " + client);
}
@SuppressWarnings("unchecked")
@Override
public List<ClientEntity> readAll() {
final String query = "select p from"
+ ClientEntity.class.getSimpleName() + "p";
Session session = sessionFactory.getCurrentSession();
List<ClientEntity> clientList = session.createQuery(query).list();
for (ClientEntity c : clientList) {
clientLog.info("Item:", c);
}
return clientList;
}
@Override
public ClientEntity getObjectId(final long id) {
Session session = sessionFactory.getCurrentSession();
ClientEntity client = session.load(ClientEntity.class, id);
clientLog.info("Client" + client);
return client;
}
При обращении к базе данных выпадает исключение NullPointerException. Я предполагаю потому что SessionFactory не инициализирован. Пробовал использовать @Autowared но возникает ошибка указывающая что SessionFactory нет в списке бинов для внедрения. Возможно я ошибся в конфигурации.
private Properties hibernateProperties() {
Properties htProperties = new Properties();
htProperties.put("hibernate.dialect",
env.getProperty("hibernate.dialect"));
htProperties.put("hibernate.show_sql",
env.getRequiredProperty("hibernate.show_sql"));
htProperties.put("hibernate.hbm2ddl.auto",
env.getRequiredProperty("hibernate.hbm2ddl.auto"));
return htProperties;
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager transactionManager =
new JpaTransactionManager();
transactionManager.setEntityManagerFactory(
entityManagerFactory().getObject());
return transactionManager;
}
Пробовал исправить на:
@Bean
public LocalSessionFactoryBean transactionManager() {
LocalSessionFactoryBean factoryBean =
new LocalSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean;
}
Но выпадает стек с ошибкой 500:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
В чем может быть проблема?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! Мне нобходимо найти способ хранить тайлы, с размерами больше 1x1 в стандартной тайл-карте (tilemap, как по русски то?)
Подскажите пожалуйста, как "утолстить" шрифт в IntelliJ IDEА? Просто в Windows он настолько тонок, что смотреть неприятно
Недавно столкнулся с проблемой: при считывании из текстового файла, русские символы преобразовывались в '�', при том, что раньше такого не было