Não consigo pegar o id do último item cadastrado

Fala galera, estou utilizando o Toplink, estou elaborando um programa de inventário, e tenho 2 tabelas, onde preciso na primeira tabela gravar uma informação, depois pegar o id dessa informação cadastrada agora e usar para outra coisa, não to sabendo fazer

ex:

            Cpu cpu = new Cpu();
        
             cpu.setIsAlugado(true);
             cpu.setIdentificacao("KM77674");
            cpu.setLocalC("Sede Rio");
            cpu.setAndar("8º");
            cpu.setProcessador("Pentium I");
         
            em.persist(cpu);

            System.out.println(cpu.getId());

Ele dá como se a cpu.getId(); retorna-se null, me falaram que quando se faz o persist ele atualizaria no objeto o que não aconteceu, embora no banco tenha gravado certo, o Id é um número gerado automaticamente pelo banco, nas classes persistentes tenho lá o @GeneratedValue(strategy = GenerationType.IDENTITY), gera certo, já tentei dá um refresh, mas não funcionou, alguém tem a solução??

preciso desse Id para fazer outras tarefas, deve ter uma maneira de pegar automaticamente, uma coisa no persistence.xml, não sei… um comando para atualizar o objeto.

Segue abaixo a classe Cpu

Cpu

@Entity
@Table(name = "cpu")

public class Cpu implements Serializable 
{
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "ID", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "IDENTIFICACAO", nullable = false)
    private String identificacao;

    @Column(name = "PROCESSADOR", nullable = false)
    private String processador;
   
    @Column(name = "LOCAL_C", nullable = false)
    private String localC;

    @Column(name = "ANDAR", nullable = false)
    private String andar;

    @Column(name = "IS_ALUGADO", nullable = false)
    private boolean isAlugado;

Minha opinião é q ele naum atualiza o object, não sei direito pq naum conheço bem toplink, pode até ser q ele tenha esse recurso mas, acho pouco provável e meio sem sentido ter esse tipo de funcionalidade, acho q vc vai ter q dar um find por criteria para ter esse resultado.

dando um find eu sei que dá para recuperar… mas queria uma maneira direta

Qual base vc usa é oracle ou mysql?

Se for a primeira essa annotation(GenerationType.IDENTITY) não vai funcionar precisa usar o SequenceGenerator

utilizo o MYSQL 5.0

Você não pode implementar um método que faça uma pesquisa no BD e armazene o resultado numa variável temporário.
Ou algo do tipo que no momento do cadastro, armazene o id numa variável de classe?