SeamはEntityQueryのvalidateフェーズでセッションを開始し、FlushModeType.MANUALパラメータが無効な問題の解決
1585 ワード
問題のように、私の解決方法を直接見てください.
delegateによるトランザクションのコミットモードの設定
なぜ@Begin(flushMode=FlushModeType.MANUAL,join=true)のように設定しないのか疑問に思う人もいますが、Seamのコンテキスト環境は存在しますが、FlushModeType.MANUALパラメータが無効です.具体的な原因はまだ分かりません.
Seam公式ドキュメント:Seamでは、セッションの開始時にFlushModeTypeを指定できます.MANUALパラメータ.現在、Hibernateは永続化の最下位プロバイダとして機能していますが、他の同類のコンピュータメーカーの拡張をサポートする計画です.
validateメソッドは、コンポーネントが作成されたときに実行されます.
しかし、EntityQueryのvalidateフェーズではセッションを開始することができるが、なぜFlushModeTypeを指定するのか.MANUALパラメータはありますが、無効ですか?
注:ここのEntityQueryはorgです.jboss.seam.framework.EntityQuery<E>,validate実装ソースコード
@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公式ドキュメント:Seamでは、セッションの開始時にFlushModeTypeを指定できます.MANUALパラメータ.現在、Hibernateは永続化の最下位プロバイダとして機能していますが、他の同類のコンピュータメーカーの拡張をサポートする計画です.
validateメソッドは、コンポーネントが作成されたときに実行されます.
しかし、EntityQueryのvalidateフェーズではセッションを開始することができるが、なぜFlushModeTypeを指定するのか.MANUALパラメータはありますが、無効ですか?
注:ここのEntityQueryはorgです.jboss.seam.framework.EntityQuery<E>,validate実装ソースコード
@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");
}
}