Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Spring声明性事务的Wicket_Spring_Jpa_Transactions_Wicket_Aspectj - Fatal编程技术网

带Spring声明性事务的Wicket

带Spring声明性事务的Wicket,spring,jpa,transactions,wicket,aspectj,Spring,Jpa,Transactions,Wicket,Aspectj,可以在Spring容器之外使用Spring框架的@Transactional支持。参考文档中有一章是关于AspectJ方面的。我试图在wicket应用程序中使用它,但没有任何积极的结果 <tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" /> <context:annotation-config /> <context:component-scan base-pa

可以在Spring容器之外使用Spring框架的@Transactional支持。参考文档中有一章是关于AspectJ方面的。我试图在wicket应用程序中使用它,但没有任何积极的结果

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>
application-context.xml:

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>
堆栈跟踪:

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>
org.apache.openjpa.persistence.TransactionRequiredException: Can only perform operation while a transaction is active.
您可能可以使用AspectJ实现这一点,但对于一个简单的问题来说,这是一个非常复杂的解决方案

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>
如果您需要声明性事务,那么我建议您将事务逻辑从wicket组件向下移动到Springbean中,并从wicket对象调用Springbean。Springbean将具有事务性注释,并将由Spring容器正确代理。

您可能可以使用AspectJ实现这一点,但对于一个简单的问题来说,这是一个非常复杂的解决方案

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>

如果您需要声明性事务,那么我建议您将事务逻辑从wicket组件向下移动到Springbean中,并从wicket对象调用Springbean。Springbean将具有事务性注释,并且将由Spring容器正确代理。

我没有Wicket方面的经验。但是您的“表单类”(包含用
@Transactional
注释的方法)是Spring托管代码吗?i、 e.谁创建类的实例

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>

如果不是,Spring将不会提供
@事务性
支持(自动连线
@也不会工作,等等)。

我没有Wicket方面的经验。但是您的“表单类”(包含用
@Transactional
注释的方法)是Spring托管代码吗?i、 e.谁创建类的实例

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>

否则,Spring将不提供
@事务性
支持(自动连线
@也不起作用,等等)。

@事务性可在Spring容器外部使用,例如在实体类>。但我做错了什么事,而且不管用。你是指。那么是的-你是对的,它将为非Spring托管代码添加
@Transactional
支持,但所有这些类仍然必须通过Spring进行某种处理(他们称之为
Spring aspects.jar
)。我试图添加aspectj处理,但它不起作用。任何关于为什么?@Transactional的建议都可以在Spring容器外部使用,例如在entity class>上。但我做错了什么事,而且不管用。你是指。那么是的-你是对的,它将为非Spring托管代码添加
@Transactional
支持,但所有这些类仍然必须通过Spring进行某种处理(他们称之为
Spring aspects.jar
)。我试图添加aspectj处理,但它不起作用。有什么建议吗?是的,是我的错。这个简单的解决方案更好。没必要夸张。是的,我的错。这个简单的解决方案更好。没有必要夸大。
<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />

<bean id="annotationTransactionAspect" factory-method="aspectOf"
      class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
    <property name="transactionManager" ref="transactionManager"></property>
</bean>