Jpa mysql cadastrar

seguinte tenho o metodo funciona correto

EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa_mysqlPU");
    EntityManager em = emf.createEntityManager();    
    
cliente cli = new cliente();    

cli.setNome("fabio");
  em.getTransaction().begin();
em.persist(cli);
  em.getTransaction().commit();
    

esse metodo funciona quando ja tem algum registro na tabela cliente do banco, apaguei a tabela cliente esta zerada sem nenhum dado, e quando executo o metodo com o banco zerado da o seguinte erro dizendo que ID=null, logico que é null nao tenho nenhum dado no banco, nao existe nenhuma tabela no banco

[EL Warning]: 2013-03-03 19:56:56.484–The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units. Please verify that your entity classes are referenced in persistence.xml using either elements or a global false element
Exception in thread “main” java.lang.IllegalArgumentException: Object: jpa_mysql.modelo.cliente[ id=null ] is not a known entity type.

Você mandou gerar ID automaticamente?

Não sei c é isso mas a mensagem de erro diz: Object: jpa_mysql.modelo.cliente[ id=null ] is not a known entity type.

sim e o que posso fazer para solucionar o problema ???

[quote=fabiodurgante]sim e o que posso fazer para solucionar o problema ???[/quote]Como está a classe cliente?

Você esta gerando o ID através de uma sequence? Se sim, a sequencia pode ter perdido a referencia. Para resolver este problema você pode editar a sequence setando na mão o próximo valor da sequencia ou simplesmente apagar e criá-la novamente.

Abs!

classe cliente

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Humberto
 */
@Entity
@Table(name = "cliente_modelo")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "ClienteModelo.findAll", query = "SELECT c FROM ClienteModelo c"),
    @NamedQuery(name = "ClienteModelo.findById", query = "SELECT c FROM ClienteModelo c WHERE c.id = :id"),
    @NamedQuery(name = "ClienteModelo.findByNome", query = "SELECT c FROM ClienteModelo c WHERE c.nome = :nome")})
public class ClienteModelo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID")
    private Long id;
    @Column(name = "NOME")
    private String nome;

    public ClienteModelo() {
    }

    public ClienteModelo(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    
    
    
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 47 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 47 * hash + (this.nome != null ? this.nome.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ClienteModelo other = (ClienteModelo) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if ((this.nome == null) ? (other.nome != null) : !this.nome.equals(other.nome)) {
            return false;
        }
        return true;
    }

 

    @Override
    public String toString() {
        return "modelo.ClienteModelo[ id=" + id + " ]";
    }
    
}

essa classe o netbeans cria sozinho.

Sua classe se chama ClienteModelo e você está persistindo uma de nome cliente?

Object: jpa_mysql.modelo.cliente[ id=null ] is not a known entity type.

outra coisa que percebo o codigo abaixo funciona para update

 ClienteModelo   cli = em.find(ClienteModelo.class, 1l);  
 cli.setNome("mariosasas");
    
 em.getTransaction().begin();
         em.merge(cli);
         em.getTransaction().commit();

porem o codigo abaixo mesma coisa nao funciona


    EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA_cadastra_ja_contendoTabelaPU");
        EntityManager em = emf.createEntityManager();
     clientedao dw = new clientedao(emf); 

   ClienteModelo   cli = em.find(ClienteModelo.class, 1l);  
 cli.setNome("mariosasas");
    
dw.atualizar(cli);

na classe clientedao  o metodo esta assim

public void atualizar(ClienteModelo cli) {
    
    ClienteModelo clie = getEntityManager().find(ClienteModelo.class, cli.getId());  
 clie.setNome(cli.getNome());
          getEntityManager().getTransaction().begin();
          getEntityManager().merge(clie);
         getEntityManager().getTransaction().commit();
    
    } 


Exception in thread "main" java.lang.IllegalStateException: 
Exception Description: No transaction is currently active

esta fazendo a mesma coisa so que se o metodo estiver na outra classe nao funciona o erro que retorna