3
respostas

Erro ao fazer o TesteDoLockPessimista

Ao executar o código que o instrutor passou:

public static void main(String[] args) {
        @SuppressWarnings("resource")
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JpaConfigurator.class);
        EntityManagerFactory factory = context.getBean(EntityManagerFactory.class);

        EntityManager em1 = factory.createEntityManager();
        EntityManager em2 = factory.createEntityManager();

        em1.getTransaction().begin();
        em2.getTransaction().begin();

        Produto produtoDoEM1 = em1.find(Produto.class, 3);
        em1.lock(produtoDoEM1, LockModeType.PESSIMISTIC_WRITE);

        produtoDoEM1.setNome("Maria");

        Produto produtoDoEM2 = em2.find(Produto.class, 3);
        em2.lock(produtoDoEM2, LockModeType.PESSIMISTIC_WRITE);

    }

Retornou este erro na linha do primeiro lock!!

Exception in thread "main" java.lang.IllegalArgumentException: entity not in the persistence context
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.lock(AbstractEntityManagerImpl.java:1472)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.lock(AbstractEntityManagerImpl.java:1461)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:344)
    at com.sun.proxy.$Proxy35.lock(Unknown Source)
    at br.com.caelum.TesteLockPessimista.main(TesteLockPessimista.java:25)

Eu entendi o exemplo só quero entender o por que do erro?

3 respostas

Oi David, também não entendi o motivo :(. Tem como colocar seu código no github para eu baixar, executar e tentar achar o motivo... a exception até está clara para mim, mas olho o código e não vejo relação.

Opah Alberto! já ta la! vlw pela força!

Segue o link para o Github. https://github.com/dvdpansardis/Example_JPA_2.git

Alberto mais um detalhe não tem muito a ver com este post! mas com o curso! se quiser depois abro outro tópico!

Estou tentando fazer o EhCache L2 em um projeto que eu to desenvolvendo com springboot! mas cara o spring só reclama que não acha a "region factory"! e fiz igual ao curso, para usar o EhCache no springboot tem alguma malandragem? vlw pelas dicas!

Pessoal,

Alguma novidade nesse tópico? Também estou com o mesmo problema.