Olá!
Sou iniciante em java e estou desenvolvendo um pequeno sistema de gerenciamento.
Ao fazer um cadastro e tentar "salvar" acontece o seguinte: INFO: Not binding factory to JNDI, no JNDI name configured
21/10/2010 22:40:36 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.3.0.GA
21/10/2010 22:40:36 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.2
21/10/2010 22:40:36 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
21/10/2010 22:40:36 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
21/10/2010 22:40:36 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
21/10/2010 22:40:36 org.hibernate.ejb.Version <clinit>
INFO: Hibernate EntityManager 3.3.0.GA
21/10/2010 22:40:36 org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: DAO.CodigoN
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QTodosCodigosN => from CodigoN order by codigo
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QCodigoNByCodigo => from CodigoN where codigo = :codigo order by codigo
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QCodigoNByDescricao => from CodigoN where descricao = :descricao order by codigo
21/10/2010 22:40:36 org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity DAO.CodigoN on table CodigoN
21/10/2010 22:40:36 org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: DAO.OrgaoResp
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QTodosOrgaoResp => from OrgaoResp order by codigo
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QOrgaoRespByCodigo => from OrgaoResp where codigo = :codigo order by codigo
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QOrgaoRespByDescricao => from OrgaoResp where descricao = :descricao order by codigo
21/10/2010 22:40:36 org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity DAO.OrgaoResp on table OrgaoResp
21/10/2010 22:40:36 org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: DAO.LoginUsuario
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QTodosLogins => from LoginUsuario where pendenteAprovacao = :pendente
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QLoginByLogin => from LoginUsuario where login = :login and pendenteAprovacao = :pendente
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QLoginByNome => from LoginUsuario where nome = :nome and pendenteAprovacao = :pendente
21/10/2010 22:40:36 org.hibernate.cfg.annotations.QueryBinder bindQuery
INFO: Binding Named query: QLoginByAcesso => from LoginUsuario where organizador = :organizador and tecnico = :tecnico and atleta = :atleta and responsavelProva = :responsavelProva and pendenteAprovacao = :pendente
21/10/2010 22:40:36 org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity DAO.LoginUsuario on table LoginUsuario
21/10/2010 22:40:36 org.hibernate.cfg.AnnotationConfiguration secondPassCompile
INFO: Hibernate Validator not found: ignoring
21/10/2010 22:40:36 org.hibernate.cfg.AnnotationConfiguration secondPassCompile
INFO: Hibernate Validator not found: ignoring
21/10/2010 22:40:36 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
21/10/2010 22:40:36 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 20
21/10/2010 22:40:36 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: true
21/10/2010 22:40:36 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/ocorrenciasambientais
21/10/2010 22:40:36 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=root, password=****, autocommit=true, release_mode=auto}
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: RDBMS: MySQL, version: 5.1.50-community
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.13 ( Revision: ${bzr.revision-id} )
21/10/2010 22:40:37 org.hibernate.dialect.Dialect <init>
INFO: Using dialect: org.hibernate.dialect.MySQLDialect
21/10/2010 22:40:37 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
INFO: Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory
21/10/2010 22:40:37 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic flush during beforeCompletion(): disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic session close at end of transaction: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch size: 15
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch updates for versioned data: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Scrollable result sets: enabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC3 getGeneratedKeys(): enabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Connection release mode: auto
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Maximum outer join fetch depth: 2
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default batch fetch size: 1
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Generate SQL with comments: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL updates by primary key: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
21/10/2010 22:40:37 org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
INFO: Using ASTQueryTranslatorFactory
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query language substitutions: {}
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JPA-QL strict compliance: enabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Second-level cache: enabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query cache: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory createCacheProvider
INFO: Cache provider: org.hibernate.cache.NoCacheProvider
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Optimize cache for minimal puts: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Structured second-level cache entries: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Statistics: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Deleted entity synthetic identifier rollback: disabled
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default entity-mode: pojo
21/10/2010 22:40:37 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Named query checking : enabled
21/10/2010 22:40:37 org.hibernate.impl.SessionFactoryImpl <init>
INFO: building session factory
21/10/2010 22:40:37 org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: org.hibernate.HibernateException: The database returned no natively generated identity value
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:219)
at DAO.CodigoNDAO.save(CodigoNDAO.java:30)
at controller.CodigoNController.actionPerformed(CodigoNController.java:33)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.hibernate.HibernateException: The database returned no natively generated identity value
at org.hibernate.id.IdentifierGeneratorFactory.getGeneratedIdentity(IdentifierGeneratorFactory.java:33)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:74)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2154)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2634)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
... 28 more
Segue abaixo as demais classes usadas:
PERSISTENCE
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="mycontext">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/ocorrenciasambientais"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>
MODEL
package model;
import java.util.Observable;
import DAO.CodigoN;
public class CodigoNModel extends Observable {
private int codigo;
private String descricao;
private CodigoN codigoN;
public CodigoN getCodigoN() {
return codigoN;
}
public void setCodigoN(CodigoN codigoN) {
this.codigoN = codigoN;
if (codigoN != null) {
this.codigo = codigoN.getCodigo();
this.descricao = codigoN.getDescricao();
}
setChanged();
notifyObservers();
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
notifyObservers();
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
notifyObservers();
}
}
DAO
package DAO;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class DAOFactory {
public static DAOFactory getInstance() {
if (instance == null) {
instance = new DAOFactory();
}
return instance;
}
public DAOFactory() {
emf = Persistence.createEntityManagerFactory("mycontext");
em = emf.createEntityManager();
orgaoRespDAO = new OrgaoRespDAO(em);
codigoNDAO = new CodigoNDAO(em);
//loginDAO = new LoginUsuarioDAO(em);
}
public OrgaoRespDAO getOrgaoRespDAO() {
return orgaoRespDAO;
}
public CodigoNDAO getCodigoNDAO() {
return codigoNDAO;
}
/*public LoginUsuarioDAO getLoginDAO() {
return loginDAO;
}*/
}
package DAO;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
@Entity
@NamedQueries({
@NamedQuery(name="QTodosCodigosN",query="from CodigoN order by codigo"),
@NamedQuery(name="QCodigoNByCodigo",query="from CodigoN where codigo = :codigo order by codigo"),
@NamedQuery(name="QCodigoNByDescricao",query="from CodigoN where descricao = :descricao order by codigo"),
})
public class CodigoN implements Serializable {
public static final String QUERY_TODOS_CODIGOSN = "QTodosCodigosN";
public static final String QUERY_CODIGON_CODIGO = "QCodigoNByCodigo";
public static final String QUERY_CODIGON_DESCRICAO = "QCodigoNByDescricao";
private static final long serialVersionUID = 6655415509439596696L;
@Id
@GeneratedValue
private int OID;
@Column(nullable= false)
private int codigo;
@Column(nullable= false)
private String descricao;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getOID() {
return OID;
}
public void setOID(int oid) {
OID = oid;
}
}
package DAO;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import model.PesquisaCodigoNModel;
import org.hibernate.exception.ConstraintViolationException;
import utils.OpcaoFiltro;
public class CodigoNDAO {
private EntityManager em;
public CodigoNDAO(EntityManager em) {
this.em = em;
}
public void save(CodigoN codigoN) {
EntityTransaction et = em.getTransaction();
et.begin();
if (em.contains(codigoN)) {
em.merge(codigoN);
} else {
em.persist(codigoN);
}
et.commit();
}
public List<CodigoN> getCodigosN(OpcaoFiltro opcaoFiltro, String valor) {
Query query;
if (opcaoFiltro.getCodigo() == PesquisaCodigoNModel.OPCAO_CODIGO && !valor.equals("")) {
query = em.createNamedQuery(CodigoN.QUERY_CODIGON_CODIGO);
query.setParameter("codigo", Integer.parseInt(valor));
} else if (opcaoFiltro.getCodigo() == PesquisaCodigoNModel.OPCAO_DESCRICAO && !valor.equals("")) {
query = em.createNamedQuery(CodigoN.QUERY_CODIGON_DESCRICAO);
query.setParameter("descricao", valor);
} else {
query = em.createNamedQuery(CodigoN.QUERY_TODOS_CODIGOSN);
}
return query.getResultList();
}
public CodigoN getCodigoNByCodigo(int codigo) throws Exception {
CodigoN codigoN = null;
String cons = "from CodigoN where codigo = ?";
Query qr = em.createQuery(cons);
qr.setParameter(1, codigo);
try {
codigoN = (CodigoN) qr.getSingleResult();
return codigoN;
} catch (NoResultException e) {
throw e;
}
}
public int getNovoCodigo() {
CodigoN codigoN = null;
String cons = "from CodigoN where codigo = (select max(codigo) from CodigoN)";
Query qr = em.createQuery(cons);
try {
codigoN = (CodigoN) qr.getSingleResult();
return codigoN.getCodigo() + 1;
} catch (NoResultException e) {
return 1;
}
}
public void remover(CodigoN codigoN) throws Exception {
try {
EntityTransaction et = em.getTransaction();
et.begin();
em.remove(codigoN);
et.commit();
} catch (ConstraintViolationException ex) {
throw ex;
}
}
}
Obrigaaada :)
