Erro: Startar TomCat: detached entity passed to persist: modelo.Especificacao

Pessoal,

Fiz uma classe Main, para testar a minha aplicação, só que esta dando o erro abaixo :

INFO: schema update complete
Exception in thread “main” javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: modelo.Especificacao
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:678)
at modelo.main.main(main.java:30)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: modelo.Especificacao
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:127)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:808)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:782)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:786)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:672)
… 1 more

Segue minhas classes :

	public static void main(String[] args) {
		
		System.out.println("teste");

		 EntityManagerFactory emf= Persistence.createEntityManagerFactory("EstoqueJPA");
		 EntityManager em=emf.createEntityManager();
		 em.getTransaction().begin();
		 
		 Especificacao esp = new Especificacao();
		 esp.setId( new Long (10));
		 esp.setDescricao("RAZZO - Especificação de Matérias-Primas, Mel Hidroxipropiltrimônio.");
		 esp.setNome("RAZ-N-Essência Goose Bay");
		 esp.setNomeresumido("RAZ-N-Essência Boo");
		 esp.setOrigem("Cliente");		 
		 em.persist(esp);
		 em.getTransaction().commit();
		 em.close();
		 emf.close();
  }

@Entity
@Table(name="especificacao")
public class Especificacao implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	private Long id;

	@Column(nullable=false, length=1000)
	private String descricao;

	@Column(nullable=false, length=255)
	private String nome;

	@Column(nullable=false, length=255)
	private String nomeresumido;

	@Column(length=255)
	private String origem;

	//bi-directional many-to-one association to PrecoMetodo
	@OneToMany(mappedBy="especificacao")
	private List<PrecoMetodo> precoMetodos;

    public Especificacao() {
    }

	public Long getId() {
		return this.id;
	}

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

	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getNome() {
		return this.nome;
	}

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

	public String getNomeresumido() {
		return this.nomeresumido;
	}

	public void setNomeresumido(String nomeresumido) {
		this.nomeresumido = nomeresumido;
	}

	public String getOrigem() {
		return this.origem;
	}

	public void setOrigem(String origem) {
		this.origem = origem;
	}

	public List<PrecoMetodo> getPrecoMetodos() {
		return this.precoMetodos;
	}

	public void setPrecoMetodos(List<PrecoMetodo> precoMetodos) {
		this.precoMetodos = precoMetodos;
	}
	
}

Obrigado a Todos.

Esse post explica o que é o problema e qual a solução: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

O problema é que vc setou manualmente o ID numa entidade onde era esperado que o ID fosse gerado automaticamente(@GeneratedValue)

Tentei tirar o setId, mas esta dando o erro abaixo :

INFO: Bind entity modelo.Ensaio on table ensaio
Exception in thread “main” java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1912)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:796)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3977)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3931)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1368)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1477)
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1096)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:278)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:362)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at modelo.main.main(main.java:20)
… 1 more