0

セッションへのエントリーポイントと思いますが、失敗したようです。私の構成かどうか?これが私の春の設定です。

<bean id="aspect" class="org.bigbean.common.aop.DaoAspect" />
<aop:config>
    <aop:aspect ref="aspect">       
        <aop:around pointcut="execution(* org.hibernate.SharedSessionContract.createQuery(java.lang.String))"
            method="aroundAdvice" />
    </aop:aspect>
</aop:config>

フォローは私のクラスです

    public Object aroundAdvice(ProceedingJoinPoint pjp) throws Throwable {
    System.out.println("aroundAdvice");
    String hql = (String) pjp.getArgs()[0];
    if(hql.indexOf("update") > -1){
        StringBuilder sb = new StringBuilder();
        int temp = hql.indexOf("where");
        if(temp > -1){
            sb.append(hql.subSequence(0, temp));
            sb.append(",updateDate = :updateDate ");
            sb.append(hql.substring(temp));
        }else{
            sb.append(",updateDate = :updateDate ");
        }
        hql = sb.toString();
        mark = true;
    }
    Object retVal = pjp.proceed(new Object[] { hql });
    return retVal;
}
4

1 に答える 1

0

load-time weavingまたはcompile-time weavingを使用していない限り、Spring AOP はプロキシベースです。これは、Spring によって作成されたオブジェクト (つまり、Spring Bean) でのみポイントカットできることを意味します。通常の構成を使用して hibernate 内で作成された可能性が最も高い内部 Hibernate オブジェクトをポイントカットしようとしていますnew SharedSessionContract()

于 2013-01-29T10:17:32.150 に答える