Hi all,
It is my first post here, usually I would use StackOverflow, but there is
almost none questions/ answers tagged with DeltaSpike.
Sorry for wasting your precious time. But I'm struggling for a couple of
hours with not working @Transactional interceptor from
*deltaspike-jpa-module* inside my own interceptor.
Details:
My own interceptor: @DetectIntegrityConstraintViolationInterceptor needs to
have injected an EntityManager instance, but unfortunately I'm always
getting "*java.lang.IllegalStateException: Transaction not active*" inside
this interceptor (injection of EntityManager works fine, but transaction is
not started automatically).
Do somebody know why?
My use case is quite simple: one service, marked with @Transactional, and
its one method is also annotated with
@DetectIntegrityConstraintViolationInterceptor.
I've been trying blindly a couple of combinations, but none works:
* I've marked also my interceptor with @Transactional
* I've marked also both my Interceptor and InterceptorBinding with
@Transactional
Simplified code:
@ManagedBean // make it a CDI bean
> @Interceptor
> @DetectIntegrityConstraintViolation
> public class DetectIntegrityConstraintViolationInterceptor {
>
> @Inject
> private EntityManager em;
>
> @AroundInvoke
>
// @Transactional // ALSO BLINDLY TRIED THIS, but no luck
>
public Object processInvocation(InvocationContext ctx)
> throws Exception {
> Object o = null;
> try {
> o = ctx.proceed();
> em.flush(); // THIS CAUSES EXCEPTION, AS TRANSACTION
> DOESN'T EXIST
> } catch (PersistenceException ex) {
> // ....
> }
> return o;
> }
>
}
>
Service class looks like:
import org.apache.deltaspike.jpa.api.transaction.Transactional;
>
>
@Transactional
> public class MyServiceBean implements MyService {
>
> @Inject
> EntityManager em;
>
> @DetectIntegrityConstraintViolation
> public ResponseEntity<User> createUser(User user) {
> em.persist(user);
> }
> }
>
Tip: EntityManager was tried both: @TransactionScoped and @RequestScoped -
result similar, only message was a bit different ;-)
Any clues?
Ps. I'm sorry, if above code is not readable, bu I don't know how to format
code inside an email.
Libs versions used:
* deltaspike-jpa-module-api 1.4.1
* weld-servlet-core 2.2.0.Final
* JDK 1.7
Kind regards
Greg Demecki