Seam在EntityQuery的validate阶段开始会话,FlushModeType.MANUAL参数无效有关问题的解决

Seam在EntityQuery的validate阶段开始会话,FlushModeType.MANUAL参数无效问题的解决如题所说,直接看我的解

Seam在EntityQuery的validate阶段开始会话,FlushModeType.MANUAL参数无效问题的解决

如题所说,直接看我的解决方法

@Override@Begin(join = true)public void validate() {super.validate();((Session) getEntityManager().getDelegate()).setFlushMode(FlushMode.MANUAL);}

?

通过delegate来设置事务的提交模式

有人会疑问,为什么我们不直接
@Begin(flushMode = FlushModeType.MANUAL, join = true)
这样设置呢,此时存在Seam的上下文环境,但FlushModeType.MANUAL参数无效,具体原因我还没明白。

?

Seam官方文档:FlushModeType.MANUAL参数。 目前,只有Hibernate作为持久化底层提供者时它才能正常工作,但是我们计划支持其它同类计算机厂商扩展。

validate方法在组件被创建时执行

FlushModeType.MANUAL参数了,但无效呢?

?

@Override public void validate() { super.validate(); if ( getEntityManager()==null ) { throw new IllegalStateException("entityManager is null"); } if (!PersistenceProvider.instance().supportsFeature(Feature.WILDCARD_AS_COUNT_QUERY_SUBJECT)) { setUseWildcardAsCountQuerySubject(false); } }

??

?

   @Create   public void validate()   {      if ( getEjbql()==null )      {         throw new IllegalStateException("ejbql is null");      }   }

?