Java 无法使用Hibernate持久化实体

Java 无法使用Hibernate持久化实体,java,mysql,hibernate,Java,Mysql,Hibernate,我有一个包含id和两个外键的表。我需要添加新记录。在persist方法之前,一切都按预期进行-productPart是有效的实体。执行persist后,MySQL表中不会出现新记录 DAO @Repository public class ProductPartDao{ @Override @Transactional public void addProductPart (ProductPart productPart) { sessio

我有一个包含
id
和两个外键的表。我需要添加新记录。在
persist
方法之前,一切都按预期进行-
productPart
是有效的实体。执行
persist
后,MySQL表中不会出现新记录

DAO

@Repository
public class ProductPartDao{
    @Override
        @Transactional
        public void addProductPart (ProductPart productPart) {
        sessionFactory.openSession().persist(productPart); // doesn't work
    }
服务

@Service
public class ProductPartService{
@Autowired
    ProductPartDao productPartDao;
 @Override
    @Transactional
    public void addProductPart(ProductPart productPart) {
        productPartDao.addProductPart(productPart);
    }
我无法使用sessionFactory.getCurrentSession(),因为它引发错误:
HibernateException:无法获取当前线程的事务同步会话

原因是什么?如何解决

更新

在applicationContext中:

...
 <tx:annotation-driven/>
...
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"
          p:sessionFactory-ref="sessionFactory">

          </bean>
...
异常前的会话对象:

当使用加载的
ConfigurableApplicationContext
从main调用对象时,它可以持久化该对象。带控制器的SpringWeb应用程序失败

已解决


通过替换
sessionFactory.openstatesession().insert(…)
解决。我不知道它是如何工作的,为什么工作。如能解释,将不胜感激

您有配置事务管理器吗?如果是的话,那就帮我们贴吧。此链接表示您已使用@Transactional annotation修复了HibernateeException,因此您对该帖子也有问题?是的,因为我被迫切换到其他方法访问
会话
我有未解决的问题。它有肮脏的快速修复只是为了让它工作。
org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
    at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134)
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:988)
    at ee.t.mysql.model.ProductPartDAOImpl.addProductPart(ProductPartDAOImpl.java:19)