У меня есть проблема с сохранением моего лица, я использую spring
4 и hibernate
4.Проблема с сохранением моих объектов
@Repository
public class AuthDao {
@Autowired
private SessionFactory sessionFactory;
@Transactional
public void enregistrer(Auth auth) {
Session session = sessionFactory.openSession();
session.saveOrUpdate(auth);
}
не добавляли записи в моей базе данных. Но если я хочу просто читать, то это ок.
session.get(Auth.class, 2)
моя вторая проблема в том, что я хочу понять, почему, когда я поставил:
Session session = sessionFactory.getCurrentSession();
это не работает, и я получил:
No Session found for current thread
мои другие файлы:
@Controller
public class testController {
@Autowired
private AuthDao authDao;
@RequestMapping(value = "/cc")
public String printWelcome() {
authDao.enregistrer(new Auth(7, "test", "test"));
return "hello";
}
}
<context:component-scan base-package="dao"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
...
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
...
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
Но даже когда я закрываю все свой проект и закрываю затмение, объект не сохраняется! Я знаю, что с шаблоном спящего режима лучше, но я хочу знать, с чего проблема возникает в первую очередь. – Youssef
вы закрыли HibernateSession (session.close()) ?? В любом случае, я не уверен, как hibernate управляет AUTO_COMMIT, но вы должны работать с транзакционными отметками. HibernateTemplate дает вам простые (и безопасные) способы использования HibernateSesion. Пример (только спящий режим) 'Session sess = factory.openSession(); Сделка tx; try { tx = sess.beginTransaction(); // Производим некоторые работы ... tx.commit(); } catch (исключение e) { if (tx! = Null) tx.rollback(); throw e; } finally { sess.close(); } ' – djvazquez
' session.close() 'не работает. но 'session.flush()' работает, даже если я удалю все элементы '@ Transactional' и' transactionManager', я действительно запутался. – Youssef