休眠:我应该包括开始事务并在抽象路径中提交吗?

时间:2019-01-03 11:06:34

标签: java spring hibernate

我正在尝试从Baeldung的一篇文章中实现AbstractHibernateDao,但是当我运行代码时,出现如下错误:

没有活动交易(当前状态:NOT_ACTIVE),调用方法“ persist”无效。

我了解代码中所见的每个方法都需要一个开始并提交一个事务才能起作用,并且一旦完成就可以很好地工作。

开始事务和提交是否只是为了简短而未包含在本文中,还是在某些配置上不见了?

public abstract class AbstractHibernateDao< T extends Serializable > {

private Class< T > clazz;

@Autowired
SessionFactory sessionFactory;

public final void setClazz( Class< T > clazzToSet ){
   this.clazz = clazzToSet;
}

public T findOne( long id ){
  return (T) getCurrentSession().get( clazz, id );
}
public List< T > findAll(){
  return getCurrentSession().createQuery( "from " + clazz.getName() 
  ).list();
}

public void create( T entity ){
  getCurrentSession().persist( entity );
}

public void update( T entity ){
 getCurrentSession().merge( entity );
}

public void delete( T entity ){
 getCurrentSession().delete( entity );
}
public void deleteById( long entityId ) {
  T entity = findOne( entityId );
  delete( entity );
}

protected final Session getCurrentSession() {
  return sessionFactory.getCurrentSession();
  }
}

我正在学习Spring的Hibernate和最佳实践。这是Baeldung的文章https://www.baeldung.com/persistence-layer-with-spring-and-hibernate

0 个答案:

没有答案