Fórum JPA 2.0 #145758

19/04/2010

0

Boa a tarde a todos,   Não sei como tratar uma questão ainda no meu sistema, que é a seguinte:   Tenho uma tabela no banco de dados que vou chamar de Tabela1 aqui, essa Tabela1 quando for inserir algo nela pelo persist do meu JPA 2.0 tenho que bloquear para ninguém mais poder alterar ou inserir algo nela porque meu sistema tem 1000 usuários que pode fazer a mesma coisa então só vou liberar a Tabela1 para leitura para os outros 999 usuários até eu terminar de inserir na Tabela1 com o persist JPA 2.0.   Minha pergunta é: como faço isso usando o JPA 2.0?
Regina

Regina

Responder

Posts

19/04/2010

Dyego Carmo

em.lock();

Utilize Lock do tipo pessimista.

Responder

Gostei + 0

19/04/2010

Regina

em.lock();

Utilize Lock do tipo pessimista.

  teria algum exemplo para refrescar minha memória...
Responder

Gostei + 0

20/04/2010

Regina

Pessoal preciso bloquear minha tabela não so uma linha, isso na hora da inserção mais usando persist do jpa 2.0 nada feito pelo banco de dados tudo programado dentro do java. Tentei usar entityManager.lock() so que ele funciona para uma linha da tabela e tem que existir esse registro no banco já. Meu caso é ao contrario, preciso bloquear toda a tabela e inserir um novo registro até agora não consegui alguém tem uma idéia ou ja tentou fazer isso???? lembrando: estou com glassfishV3, jpa2.0, hibernate, mysql e swing.  
Responder

Gostei + 0

28/04/2010

Carlos Mazzi

Criar um metodo que verifique se o usuario que esta logado é o ultimo que alterou a mesma, e ter um campo de "flag", que te da a interpretacao de todos travados menos o usuario "x". Assim vc so precisaria verificar de codigo do usuario logado = codigo que permitiria na sua tabela.
Responder

Gostei + 0

29/04/2010

Dyego Carmo

JPA não suporta isso

Voce terá que utilizar um recurso do banco para travar... e acessar este recurso utilizando uma query nativa.


ex no mysql:

em.createNativeQuery("LOCK TABLES MinhaTabela WRITE");

.... <codigo normal>

em.createNativeQuery("UNLOCK TABLES");


JPA 2.0 não encoraja isto e não suporta nativamente.... voce vai ter que recorrer ao banco.



Responder

Gostei + 0

29/04/2010

Regina

ja estava pensando nisso mesmo ate fiz uns teste com o exemplo que vc falou antes mesmo da sua resposta agora tenho certeza que a jpa2.0 não aceita.   Valeu Dyego.
Responder

Gostei + 0

30/04/2010

Dyego Carmo

JPA não suporta LOCK em tabela inteira.
Voce terá que recorrer ao seu banco de dados.

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar