joca_java 27 de jan. de 2009
Coloca a tua classe Usuario pra podermos dar uma olhadinha.
E coloca o trecho de código onde mandas salvar… estás dando o commit?
cabelograff 27 de jan. de 2009
segue a classe usuario
package br.vo ;
import java.io.Serializable ;
import java.util.ArrayList ;
import java.util.Date ;
import javax.persistence.Column ;
import javax.persistence.Entity ;
import javax.persistence.GeneratedValue ;
import javax.persistence.Id ;
import javax.persistence.Transient ;
@Entity
public class Usuario implements Serializable {
@Id
@GeneratedValue
private Long id ;
@Column ( name = "nome" )
private String nome ;
@Column ( name = "cpf" )
private Integer cpf ;
@Column ( name = "conta" )
private Double conta ;
@Column ( name = "numero" )
private Float numero ;
@Column ( name = "data" )
private Date data ;
@Transient
private ArrayList < Usuario > list ;
public Usuario (){}
public Integer getCpf () {
return cpf ;
}
public void setCpf ( Integer cpf ) {
this . cpf = cpf ;
}
public Double getConta () {
return conta ;
}
public void setConta ( Double conta ) {
this . conta = conta ;
}
public Float getNumero () {
return numero ;
}
public void setNumero ( Float numero ) {
this . numero = numero ;
}
public Date getData () {
return data ;
}
public void setData ( Date data ) {
this . data = data ;
}
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 ;
}
public ArrayList < Usuario > getList () {
return list ;
}
public void setList ( ArrayList < Usuario > list ) {
this . list = list ;
}
segue o método q faz o commit
public void commit () {
if ( transaction != null ) {
if ( transaction .isActive ()) {
try {
session .flush () ;
transaction .commit () ;
} catch ( Exception e ) {
e .printStackTrace () ;
transaction .rollback () ;
sessionFactory .close () ;
} finally {
session .close () ;
}
}
}
}
joca_java 27 de jan. de 2009
Tá faltando como o ID será gerado… se será auto-increment, ou se terás uma sequence própria…
não sei o valor padrão que o @GeneratedValue assume
coloca o @GeneratedValue assim e vê se funciona
@Id
@GeneratedValue ( strategy = GenerationType . AUTO )
private Long id ;
joca_java 27 de jan. de 2009
joca_java:
Tá faltando como o ID será gerado… se será auto-increment, ou se terás uma sequence própria…
não sei o valor padrão que o @GeneratedValue assume
coloca o @GeneratedValue assim e vê se funciona
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
Lembrando que desta forma, o valor do ID, será auto-incrementado.
Existem varias outras!
[]´s
cabelograff 27 de jan. de 2009
eu fiz oq vc falou mas deu a mesma coisa, eu estava vendo no meu hibernate.cfg.xml e lá tinha duas linhas que eu achoq não precisa
<property name= "hibernate.hbm2ddl.auto" > update</property>
<property name= "hibernate.cache.provider_class" > org.hibernate.cache.HashtableCacheProvider</property>
daí agora o erro mudou
log4j : WARN No appenders could be found for logger ( org . hibernate . cfg . annotations . Version ).
log4j : WARN Please initialize the log4j system properly .
Hibernate : insert into Usuario ( id , conta , cpf , data , nome , numero ) values ( null , ?, ?, ?, ?, ?)
org . hibernate . exception . SQLGrammarException : could not insert : [ br . vo . Usuario ]
at org . hibernate . exception . SQLStateConverter . convert ( SQLStateConverter . java : 67 )
at org . hibernate . exception . JDBCExceptionHelper . convert ( JDBCExceptionHelper . java : 43 )
at org . hibernate . id . insert . AbstractSelectingDelegate . performInsert ( AbstractSelectingDelegate . java : 40 )
at org . hibernate . persister . entity . AbstractEntityPersister . insert ( AbstractEntityPersister . java : 2158 )
at org . hibernate . persister . entity . AbstractEntityPersister . insert ( AbstractEntityPersister . java : 2638 )
at org . hibernate . action . EntityIdentityInsertAction . execute ( EntityIdentityInsertAction . java : 48 )
at org . hibernate . engine . ActionQueue . execute ( ActionQueue . java : 250 )
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 . event . def . DefaultSaveOrUpdateEventListener . saveWithGeneratedOrRequestedId ( DefaultSaveOrUpdateEventListener . java : 187 )
at org . hibernate . event . def . DefaultSaveEventListener . saveWithGeneratedOrRequestedId ( DefaultSaveEventListener . java : 33 )
at org . hibernate . event . def . DefaultSaveOrUpdateEventListener . entityIsTransient ( DefaultSaveOrUpdateEventListener . java : 172 )
at org . hibernate . event . def . DefaultSaveEventListener . performSaveOrUpdate ( DefaultSaveEventListener . java : 27 )
at org . hibernate . event . def . DefaultSaveOrUpdateEventListener . onSaveOrUpdate ( DefaultSaveOrUpdateEventListener . java : 70 )
at org . hibernate . impl . SessionImpl . fireSave ( SessionImpl . java : 535 )
at org . hibernate . impl . SessionImpl . save ( SessionImpl . java : 523 )
at org . hibernate . impl . SessionImpl . save ( SessionImpl . java : 519 )
at br . home . UsuarioHome . save ( UsuarioHome . java : 32 )
at br . process . UsuarioProcess . usuarioBean ( UsuarioProcess . java : 17 )
at br . security . SegurancaControllerImpl . usuarioBean ( SegurancaControllerImpl . java : 13 )
at br . view . controller . MainPrincipalViewController . usuarioBean ( MainPrincipalViewController . java : 15 )
at br . view . MainPrincipal . main ( MainPrincipal . java : 20 )
Caused by : java . sql . SQLException : Table not found in statement [ insert into Usuario ( id , conta , cpf , data , nome , numero ) values ( null , ?, ?, ?, ?, ?)]
at org . hsqldb . jdbc . Util . throwError ( Unknown Source )
at org . hsqldb . jdbc . jdbcPreparedStatement .< init >( Unknown Source )
at org . hsqldb . jdbc . jdbcConnection . prepareStatement ( Unknown Source )
at org . hibernate . jdbc . AbstractBatcher . getPreparedStatement ( AbstractBatcher . java : 505 )
at org . hibernate . jdbc . AbstractBatcher . prepareStatement ( AbstractBatcher . java : 94 )
at org . hibernate . id . insert . AbstractSelectingDelegate . performInsert ( AbstractSelectingDelegate . java : 30 )
... 20 more
estou procurando o pq ele não encontra a tabela
renzonuccitelli 27 de jan. de 2009
Isso já aconteceu comigo quando eu esqueci de startar e dar o commit na Transaction, dá uma olhada pra ver se não é isso.
cabelograff 27 de jan. de 2009
eu fiz uma dao generica, acessando essa classe
package br.hibernate ;
import org.hibernate.MappingException ;
import org.hibernate.Session ;
import org.hibernate.SessionFactory ;
import org.hibernate.Transaction ;
import org.hibernate.cfg.AnnotationConfiguration ;
public class SessionController {
private SessionFactory sessionFactory ;
private Transaction transaction ;
protected Session session ;
private SessionFactory getSessionFactory () throws MappingException {
if ( sessionFactory == null )
sessionFactory = new AnnotationConfiguration (). configure (). buildSessionFactory ();
return sessionFactory ;
}
public void begin () {
session = getSessionFactory (). openSession ();
transaction = session . beginTransaction ();
transaction . begin ();
}
public void commit () {
if ( transaction != null ) {
if ( transaction . isActive ()){
try {
session . flush ();
transaction . commit ();
} catch ( Exception e ) {
e . printStackTrace ();
transaction . rollback ();
sessionFactory . close ();
} finally {
session . close ();
}
}
}
}
}
joca_java 27 de jan. de 2009
Hum… tá dando um TableNotFound…
Se não criou as tabelas, troca o código
<property name= "hibernate.hbm2ddl.auto" > update</property>
por
<property name= "hibernate.hbm2ddl.auto" > create</property>
joca_java 27 de jan. de 2009
joca_java:
Hum… tá dando um TableNotFound…
Se não criou as tabelas, troca o código
<property name= "hibernate.hbm2ddl.auto" > update</property>
por
<property name="hibernate.hbm2ddl.auto">create</property>
Coloca na declaração da tua entidade também, a tabela que a classe Usuario será salva
@ Entity
@ Table ( name = "USUARIO" ) // nome da tabela
public class Usuario implements Serializable {
cabelograff 27 de jan. de 2009
nada ainda, fiz tudo oq vcs pediram e mais outras coisas e nada, até dei um SHUTDOWN no final quando dá um .close(), mas mesmo assim continua a mesma coisa :roll: