Erro Persistence

5 respostas
N

Estou com esse erro alguem pode me ajudar?

Exception in thread AWT-EventQueue-0 javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): br.com.siscom.beans.Produto

at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)

at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)

at br.com.siscom.view.ProdutoView.newButtonActionPerformed(ProdutoView.java:379)

at br.com.siscom.view.ProdutoView.access$500(ProdutoView.java:10)

at br.com.siscom.view.ProdutoView$FormListener.actionPerformed(ProdutoView.java:336)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6263)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6028)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4630)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2475)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): br.com.siscom.beans.Produto

at org.hibernate.id.Assigned.generate(Assigned.java:56)

at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)

at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)

at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)

at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)

at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)

at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:646)

at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:620)

at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:624)

at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)

 28 more

5 Respostas

R

O ID da sua classe deve ser setado manualmente.

J

Cara, se o id da sua tabela for autonumeração, vc deve setar na mão o id, senão, pode ser que falte a anotação abaixo sobre o seu id no Bean

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

O GenerationType vai variar de acordo com a politica que criação do valor que vc estabeleceu!

Ah, só um detalhe, se estiver usando o Postgres ou outro banco que não gere o Id automaticamente, a anotação deve ser algo do tipo:

@Id
	@SequenceGenerator(name="sua_seq_id_seq", sequenceName="sua_seq_id_seq")
	@GeneratedValue(generator="sua_seq_id_seq", strategy=GenerationType.AUTO)

Espero ter ajudado.

N

Agora me deu outro problema…rsrs

Exception in thread AWT-EventQueue-0 javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not insert: [br.com.siscom.beans.Produto]

at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)

at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)

at br.com.siscom.view.ProdutoView.newButtonActionPerformed(ProdutoView.java:381)

at br.com.siscom.view.ProdutoView.access$500(ProdutoView.java:10)

at br.com.siscom.view.ProdutoView$FormListener.actionPerformed(ProdutoView.java:338)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6263)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6028)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4630)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2475)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Caused by: org.hibernate.exception.GenericJDBCException: could not insert: [br.com.siscom.beans.Produto]

at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2176)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2656)

at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)

at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)

at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)

at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)

at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)

at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)

at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)

at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)

at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:646)

at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:620)

at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:624)

at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)

 28 more

Caused by: java.sql.SQLException: Field COD_PRODUTO doesnt have a default value

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2543)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1737)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2022)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1940)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1925)

at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94)

at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57)

 43 more
J

Posta o seu código pra a gente poder ajudar mais.

N

meu codigo do bean

package br.com.siscom.beans;

import java.beans.PropertyChangeListener;

import java.beans.PropertyChangeSupport;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.NamedQueries;

import javax.persistence.NamedQuery;

import javax.persistence.SequenceGenerator;

import javax.persistence.Table;

import javax.persistence.Transient;

/**
*

  • @author Paulo
    
    */
    
    @Entity
    
    @Table(name = produto,schema = “”)
    
    @NamedQueries({@NamedQuery(name = Produto.findByCodProduto, query = SELECT p FROM Produto p WHERE p.codProduto = :codProduto), @NamedQuery(name = Produto.findByCodUnidade, query = SELECT p FROM Produto p WHERE p.codUnidade = :codUnidade), @NamedQuery(name = Produto.findByCodFornecedor, query = SELECT p FROM Produto p WHERE p.codFornecedor = :codFornecedor), @NamedQuery(name = Produto.findByDescricaoProduto, query = SELECT p FROM Produto p WHERE p.descricaoProduto = :descricaoProduto), @NamedQuery(name = Produto.findByVlrCompraProduto, query = SELECT p FROM Produto p WHERE p.vlrCompraProduto = :vlrCompraProduto), @NamedQuery(name = Produto.findByVlrVendaProduto, query = SELECT p FROM Produto p WHERE p.vlrVendaProduto = :vlrVendaProduto), @NamedQuery(name = Produto.findByEstoqueProduto, query = SELECT p FROM Produto p WHERE p.estoqueProduto = :estoqueProduto), @NamedQuery(name = Produto.findByCriticoProduto, query = SELECT p FROM Produto p WHERE p.criticoProduto = :criticoProduto)})
    
    public class Produto implements Serializable {
    
    @Transient
    
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    
    private static final long serialVersionUID = 1L;
    
    @Id
    
    @SequenceGenerator(name=COD_PRODUTO, sequenceName=COD_PRODUTO)
    
    @GeneratedValue(generator=COD_PRODUTO, strategy=GenerationType.AUTO)
    
    @Column(name = COD_PRODUTO)
    
    private String codProduto;
    
    @JoinColumn(name = COD_UNIDADE, referencedColumnName = COD_UNIDADE)
    
    @ManyToOne
    
    private Unidade codUnidade;
    
    @Column(name = COD_FORNECEDOR)
    
    private Integer codFornecedor;
    
    @Column(name = DESCRICAO_PRODUTO)
    
    private String descricaoProduto;
    
    @Column(name = VLR_COMPRA_PRODUTO)
    
    private Double vlrCompraProduto;
    
    @Column(name = VLR_VENDA_PRODUTO)
    
    private Double vlrVendaProduto;
    
    @Column(name = ESTOQUE_PRODUTO)
    
    private Integer estoqueProduto;
    
    @Column(name = CRITICO_PRODUTO)
    
    private Integer criticoProduto;
    

    public Produto() {
    }

    public Produto(String codProduto) {
    
    this.codProduto = codProduto;
    
    }
    
    public String getCodProduto() {
    
    return codProduto;
    
    }
    
    public void setCodProduto(String codProduto) {
    
    String oldCodProduto = this.codProduto;
    
    this.codProduto = codProduto;
    
    changeSupport.firePropertyChange(codProduto, oldCodProduto, codProduto);
    
    }
    
    public Unidade getCodUnidade() {
    
    return codUnidade;
    
    }
    
    public void setCodUnidade(Unidade codUnidade) {
    
    Unidade oldCodUnidade = this.codUnidade;
    
    this.codUnidade = codUnidade;
    
    changeSupport.firePropertyChange(codUnidade, oldCodUnidade, codUnidade);
    
    }
    
    public Integer getCodFornecedor() {
    
    return codFornecedor;
    
    }
    
    public void setCodFornecedor(Integer codFornecedor) {
    
    Integer oldCodFornecedor = this.codFornecedor;
    
    this.codFornecedor = codFornecedor;
    
    changeSupport.firePropertyChange(codFornecedor, oldCodFornecedor, codFornecedor);
    
    }
    
    public String getDescricaoProduto() {
    
    return descricaoProduto;
    
    }
    
    public void setDescricaoProduto(String descricaoProduto) {
    
    String oldDescricaoProduto = this.descricaoProduto;
    
    this.descricaoProduto = descricaoProduto;
    
    changeSupport.firePropertyChange(descricaoProduto, oldDescricaoProduto, descricaoProduto);
    
    }
    
    public Double getVlrCompraProduto() {
    
    return vlrCompraProduto;
    
    }
    
    public void setVlrCompraProduto(Double vlrCompraProduto) {
    
    Double oldVlrCompraProduto = this.vlrCompraProduto;
    
    this.vlrCompraProduto = vlrCompraProduto;
    
    changeSupport.firePropertyChange(vlrCompraProduto, oldVlrCompraProduto, vlrCompraProduto);
    
    }
    
    public Double getVlrVendaProduto() {
    
    return vlrVendaProduto;
    
    }
    
    public void setVlrVendaProduto(Double vlrVendaProduto) {
    
    Double oldVlrVendaProduto = this.vlrVendaProduto;
    
    this.vlrVendaProduto = vlrVendaProduto;
    
    changeSupport.firePropertyChange(vlrVendaProduto, oldVlrVendaProduto, vlrVendaProduto);
    
    }
    
    public Integer getEstoqueProduto() {
    
    return estoqueProduto;
    
    }
    
    public void setEstoqueProduto(Integer estoqueProduto) {
    
    Integer oldEstoqueProduto = this.estoqueProduto;
    
    this.estoqueProduto = estoqueProduto;
    
    changeSupport.firePropertyChange(estoqueProduto, oldEstoqueProduto, estoqueProduto);
    
    }
    
    public Integer getCriticoProduto() {
    
    return criticoProduto;
    
    }
    
    public void setCriticoProduto(Integer criticoProduto) {
    
    Integer oldCriticoProduto = this.criticoProduto;
    
    this.criticoProduto = criticoProduto;
    
    changeSupport.firePropertyChange(criticoProduto, oldCriticoProduto, criticoProduto);
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public int hashCode() {
    
    int hash = 0;
    
    hash += (codProduto != null ? codProduto.hashCode() : 0);
    
    return hash;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public boolean equals(Object object) {
    
    // TODO: Warning - this method won’t work in the case the id fields are not set
    
    if (!(object instanceof Produto)) {
    
    return false;
    
    }
    
    Produto other = (Produto) object;
    
    if ((this.codProduto == null && other.codProduto != null) || (this.codProduto != null && !this.codProduto.equals(other.codProduto))) {
    
    return false;
    
    }
    
    return true;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public String toString() {
    
    return “br.com.siscom.beans.Produto[codProduto=” + codProduto + “]”;
    
    }
    
    public void addPropertyChangeListener(PropertyChangeListener listener) {
    
    changeSupport.addPropertyChangeListener(listener);
    
    }
    
    public void removePropertyChangeListener(PropertyChangeListener listener) {
    
    changeSupport.removePropertyChangeListener(listener);
    
    }
    

}

num acho erro cara…ver se vc me dar uma luz…obrigado!!!

Criado 8 de março de 2010
Ultima resposta 8 de mar. de 2010
Respostas 5
Participantes 3