Como fazer para mostrar o ID em uma JTextField, quando este ID é auto-incrementado?

11 respostas
J

Olá!!
Estou fazendo uns testes antes de dar continuidade ao projeto final de curso.
Bem, minha dúvida é como fazer o código aparecer na JTextField, sendo que este ID é auto-incrementado.
Alguém pode me ajudar? Eu uso netbeans 7.0, hibernate e SQL Server 2008.
:smiley:

11 Respostas

L

Basta você ao realizar a consulta no banco de dados, trazer além dos valores desejados o ID também, ai no campo JTextField você irá passar como valor o id da consulta, lembrando que seria bom você deixar esta campo de forma a não poder sofrer alteração.

D

O id deve aparecer antes ou após a inserção?
Se for depois, o próprio hibernate associa o ID ao objeto que está persistindo (e que acaba de ser tratado).

J

Olá, drsmachado e leocantanhede.

Eu quero que o ID apareça assim que eu abrir a janela de cadastro, ou seja, antes de acionar o evento salvar. Há essa possibilidade?
Dessa maneira eu sei quantos livros já foram cadastrados. E também, na hora de cadastrar o exemplar ele pegar o código da Obra que tá sendo cadastrada.
Como faço isso?
Está anexo o print da telinha de cadastro de obras. (Algo bem simplees! Rsrsrsrsrsr…)

Aguardo mais respostas.
beijos!


D

Hum.
Neste sentido, será preciso fazer uma consulta ao banco de dados, selecionando o último inserido e, obtendo o ID deste, somar mais 1, que será o ID do novo objeto.

J

Oi, drsmachado. :wink:

Como faço isso?
É preciso popular o JTextField?

D

Existe um método que carrega o JFrame, certo?
Assim sendo, você deve inserir uma rotina que faça a consulta pelo maior ID da tabela relativa ao tipo de objeto que será inserido.

A

essa é uma boa pergunta… pois se o ID é gerado automaticamente em sequencia pelo banco de dados, então na hora de inserir um novo registro você não vai saber qual é o próximo ID.

Existe uma forma que é bem POG, que seria fazer um sql na mão pesquisando no banco qual o maior ID e retornar adicionando 1…

ultimoId + 1 = idASerGerado

O problema disso ai é que se alguem abrir a tela depois de você e gravar primeiro, então quando vc for gravar vai da erro, falando que o ID já existe!..

J

Então, alandiniz, posso retornar numa janela o valor do ID do livro cadastrado?

J

Olá gente! Eu tentei fazer da seguinte maneira:

List<Obra> obra; private void ListarCodigoObra(){ Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); obra = session.createQuery("FROM Obra").list(); if (obra.isEmpty()){ JOptionPane.showMessageDialog(null, "Nenhum registro encontrado."); } else { jTextField1.removeAll(); for (int i = 0; i < obra.size(); i++) { // Nesta parte não tô conseguindo preencheer a JtextField! //obra.get(i).getCodObra(); } } session.close(); }
Alguem pode me dar uma luz? Rsrsrsrsrs…
:smiley:

V

Com essa estratégia, ficaria dificilimo deixar esse sitema ser usado por 2 pessoas.
Perceba que duas pessoas, cadastrando um livro ao mesmo tempo, veriam o mesmo id.

Para obter um ID recém cadastrado, não é necessário rodar uma segunda consulta no banco de dados, pois o Hibernate faz isso sozinho.
Mesmo no JDBC também, também seria possível usar o método getGeneratedKeys().

J

Oi ViniGodoy, tem certeza quando diz que:

Com essa estratégia, ficaria dificilimo deixar esse sitema ser usado por 2 pessoas.
Perceba que duas pessoas, cadastrando um livro ao mesmo tempo, veriam o mesmo id.

Então como faço pra preencher o JtextField quando quero buscar no banco e preencher na tela para atualização de dados?

List<Obra> obra; private void BuscarIdLivro(Integer codObra){ Session session = HibernateUtil.getSessionFactory().openSession(); List lista = new ArrayList(); lista = session.getNamedQuery("Obra.findByCodObra").setParameter("codObra", codObra).list(); jTextField1.setText(lista.toString()); session.close(); }

No InitComponets tento chamar o metodo mas ele fica assim:

E me retorna no jtextfield 0.

Criado 31 de janeiro de 2012
Ultima resposta 3 de fev. de 2012
Respostas 11
Participantes 5