"setar id antes de ser gerado" (resolvido)

Bom dia,
preciso setar um ID no campo textfield, mas esse codigo ainda não foi gerado, exemplo estou trabalhando com JPA intão meus ID são gerados automaticamente mais eles só serão gerados após eu persistir ele no BD, intão eu estou querendo tapiar a aplicação, pegar a quantidade dos id
e add mais um ou ir para o próximo… intenderam tipo, se tiver 4 cadastros no BD quero que meu sistema mostre 5 no textFiend

EntityManager manager = factory.createEntityManager();
Venda venda=new Venda();

codVenda.setText(venda.getId)

Sera qui tem como fazer isso…

Att.
Wiliam Witter

Talvex vc possa setar os IDs na mão se não usar a anotação @GeneratedValue… no campo ID da sua classe q será persistida.

Intão essa que é a pegada, vc intendeu meu problema … mas eu estava querendo livrar o usuario de digitar os Id intendeu eu dexei com @GeneratedValue mas gostaria de setar um valor acima q esta no BD…
mesmo assim muito obrigado pela atençaõ se vc tiver outra dica para me passar…

Cara é meio arriscado isso pq vc pode ter concorrência na hora de buscar o último ID do banco.

vc precisa pensa o seguinte chaves primárias de banco de dados NUNCA são usadas em regras de negócio ou mostrada ao usuário. Se vc precisa usar alum tipo de número pra sua classe crie um campo código e SEMPRE use auto-increment quando usar uma PK.

Desculpa minha ignorancia mais eu não intendi a linha de raciocinio

vc pod explicar em uma linguagem mais leiga por favor…

indendi oq vc quiz dizer

E por incressa que parivel era isso mesmo que eu queria… mais me explica um poco sobre esse auto incremente

Posso sim.

Digamos que vc tenha a classe carro

public class Carro{

private Long id;
private String modelo;
}

Nesse caso vc quer que o usuário ou então vc mesmo via selects determine o ID dessa classe quando ela for persistida. Agora imagine dois usuários usando a sua aplicação vc vai lá no banco e vê que o último ID é o 5, então vc determina que o próximo deve ser o 6.

Aí vem outro usuário na mesma tela, vc vai lá no banco e vê que o último ID ainda é o 5 e determina o 6 de novo. Concorda que se os usuários salvarem ambos teram o ID 6.

Então vc não pode fazer isso pq quebra as regras de PK dos bancos de dados. Se vc quer que o usuário ponha algum tipo de identificação no registro dele então crie algo como:

public class Carro{

private Long id;
private Long codigo;
private String modelo;

}

agora o código vc pode setar na mão…e o ID continua do jeito que todo mundo espera q ele esteja funcionando…automaticamente.

Muito Obrigado, não tinha penssado por este lado do BD, e vc tem toda razão, muito obrigado… valeu…