tentei rodar o exemplo de hibernate do tutorial aki do GUJ…ele compilou certinho, mas qdo rodei o exemplo, ele executa normal, mas qdo vou no banco, nao tam nada gravado lah…
eh assim mesmo ou fiz algo de errado??
p/ cada tabela do banco, vou ter um arquivo hbm.xml, uma classe com get/set e uma classe DAO com os metodos de insert, update e delete??
outra coisa…onde devo colocar os arquivos properties com as configuracoes do banco, no caso WEB e desktop??
o save() tah antes do flush()…eh assim mesmo??
esse eh o exemplo do tutorial do GUJ…
falow
Daniel_Quirino_Olive
Qual o erro que o log do hibernate lhe devolve e qual a versão do hibernate usada?
R
rbarioni
entao Daniel…
nao aparece erro, mas os dados nao estao na tabela do banco tb…
to usando o hibernate 1.2.5
Daniel_Quirino_Olive
Ok… então vamos tentar o seguinte código:
//coloque isso em um void mainAmigoa=newAmigo();a.setNome("'Rafael");//outros setXXX()...AmigoDAOdao=newAmigoDAO();dao.insert(a);
Rode isso em um debugger e, passo a passo, veja o que está acontecendo. Acabei de fazer um teste aqui com o Hibern8 1.2.5, e tudo correu bem (Win2kServer, J2SE 1.4.2, Hibern8 1.2.5, MySQL 3.23).
R
rbarioni
Daniel, nao sei se ajuda, mas aparece esses System no console…
Aug27,20039:37:48 AM cirrus.hibernate.impl.DatastoreImpl storeClassINFO: Mapping resource: Amigo.hbm.xmlAug27,20039:37:48 AM cirrus.hibernate.helpers.XMLHelper parseInputSourceINFO: Parsing XML: unknown system idAug27,20039:37:49 AM cirrus.hibernate.Environment <clinit>INFO: Hibernate 1.2.5Aug27,20039:37:49 AM cirrus.hibernate.Environment <clinit>INFO: loaded properties from resource hibernate.propertiesAug27,20039:37:49 AM cirrus.hibernate.Environment <clinit>INFO: JVM proxy support: trueAug27,20039:37:49 AM cirrus.hibernate.impl.SessionFactoryImpl <init>WARNING: No dialect set - using GenericDialect: The dialect was not set. Set the property hibernate.dialect.Aug27,20039:37:49 AM cirrus.hibernate.sql.Dialect <init>INFO: Using dialect: cirrus.hibernate.sql.GenericDialectAug27,20039:37:49 AM cirrus.hibernate.connection.DriverManagerConnectionProvider configureINFO: Hibernate connection pool size: 20Aug27,20039:37:49 AM cirrus.hibernate.connection.DriverManagerConnectionProvider configureINFO: Using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@server:1521:MyDBAug27,20039:37:49 AM cirrus.hibernate.connection.DriverManagerConnectionProvider configureINFO: Connection properties: {user=scp, password=scp}Aug27,20039:37:49 AM cirrus.hibernate.impl.SessionFactoryImpl <init>INFO: Use outer join fetching: falseAug27,20039:37:51 AM cirrus.hibernate.impl.SessionFactoryImpl <init>INFO: Use scrollable result sets: trueAug27,20039:37:51 AM cirrus.hibernate.impl.SessionFactoryObjectFactory addInstanceINFO: no JDNI name configuredAug27,20039:37:51 AM cirrus.hibernate.impl.SessionFactoryImpl <init>INFO: Query language substitutions: {}
Daniel_Quirino_Olive
Adicione estas linhas ao seu arquivo hibernate.properties:
Daniel, fiz o q vc disse, mas a tabela ainda estah vazia no banco…
o q mais pode ser??
dukejeffrie
Na minha (sessa vez humilde) opinião:
MinhaClasse.hbm.xml fica no mesmo lugar que a MinhaClasse.class. É mais chato de gerar (não pra quem usa ant e XDoclet), mas mais fácil de encontrar com o class loader.
hibernate.properties e o xml de configuração devem ficar acessíveis no classpath. Isso quer dizer, no caso de uma app web, no WEB-INF/classes (blargh, nem acredito que eu to sugerindo isso).
Se vc vai fazer um JAR, (1) continua valendo, e (2) vira a raiz do JAR.
[]s!!
K
krico
Existe isto?
tads
Olá,
comigo estava acontecendo a mesma coisa, não gravando nada,
daí eu criei uma transação para inserir o Objeto e deu certo…
Olha o código aí, espero que dê certo…
falow
abraço
publicvoidinsert(Actionaction){Sessionsession=null;Transactiontx=null;try{session=factory.openSession();tx=session.beginTransaction();session.save(action);tx.commit();session.flush();}catch(Exceptione){try{tx.rollback();}catch(HibernateExceptione1){System.out.println("Error on execute rollback:"+e);}System.out.println("method insert:"+e);}finally{try{session.close();}catch(HibernateExceptione1){System.out.println("method insert:"+e1);}}}
urubatan
eu ia sugerir isto mesmo agora
trabalhar com o hibernate sem transação só funciona em SQL Server, Sybase e MySQL, qualquer outro banco de dados precisa criar uma transação e comitar ela para salvar os dados
mais uma coisa, caso de algum erro de inserção, feche a sua session e crie outra, por que se não o troço não funciona nunca mais
R
rbarioni
valew pelas dicas, mas os dados ainda nao estao sendo gravados no banco…uso o Oracle 8i aki…
jah tentei de tudo, mas nada feito ainda…
Umlauf
Já tentou session.connection().commit(); ?
urubatan
com certeza, não precisa disto :-)
aqui vai um metodo que utilizo em um objeto DAO em um projeto aqui,
//Metodos de ajuda internosprivateObjectcriarObjeto(Objectobjeto){Transactiont=null;try{t=session.beginTransaction();session.save(objeto);t.commit();session.evict(objeto);}catch(HibernateExceptione){if(t!=null)try{t.rollback();}catch(HibernateExceptione2){}reset();objeto=null;}returnobjeto;}
session é um session do hibernate, e o metodo reset, reinicializa a variavel session caso de algum problema de inserção para limpar a sugeira que o hibernate guarda mesmo depois de um rollback :-)
pmf é o SessionFactory previamente inicializado :-)
R
rbarioni
eh galera…
nada feito ainda com esse teste de Hibernate…
to quase deixando ele de lado…os dados nao ficam gravados!!!
valew pelas dicas…
urubatan
manda o teu hibernate.properties e o log gerado pel aplicação por que ta feio o negocio, isto tinha que funcionar, tu ta fazendo alguma coisa de errado ai.
=====TestedoHibernate=======Sep2,200310:46:47 AM cirrus.hibernate.impl.DatastoreImpl storeClassINFO: Mapping resource: Amigo.hbm.xmlSep2,200310:46:47 AM cirrus.hibernate.helpers.XMLHelper parseInputSourceINFO: Parsing XML: unknown system idSep2,200310:46:49 AM cirrus.hibernate.Environment <clinit>INFO: Hibernate 1.2.5Sep2,200310:46:49 AM cirrus.hibernate.Environment <clinit>INFO: loaded properties from resource hibernate.propertiesSep2,200310:46:49 AM cirrus.hibernate.Environment <clinit>INFO: JVM proxy support: trueSep2,200310:46:49 AM cirrus.hibernate.sql.Dialect <init>INFO: Using dialect: cirrus.hibernate.sql.OracleDialectSep2,200310:46:49 AM cirrus.hibernate.connection.DriverManagerConnectionProvider configureINFO: Hibernate connection pool size: 2Sep2,200310:46:49 AM cirrus.hibernate.connection.DriverManagerConnectionProvider configureINFO: Using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@Server:1521:SCPSep2,200310:46:49 AM cirrus.hibernate.connection.DriverManagerConnectionProvider configureINFO: Connection properties: {user=***, password=***}Sep2,200310:46:49 AM cirrus.hibernate.ps.PreparedStatementCache <init>INFO: prepared statement cache size: 100Sep2,200310:46:49 AM cirrus.hibernate.impl.SessionFactoryImpl <init>INFO: Use outer join fetching: trueSep2,200310:46:51 AM cirrus.hibernate.impl.SessionFactoryImpl <init>INFO: Use scrollable result sets: trueSep2,200310:46:51 AM cirrus.hibernate.impl.SessionFactoryImpl <init>INFO: JDBC 2 max batch size: 15Sep2,200310:46:51 AM cirrus.hibernate.impl.SessionFactoryObjectFactory addInstanceINFO: no JDNI name configuredSep2,200310:46:51 AM cirrus.hibernate.impl.SessionFactoryImpl <init>INFO: Query language substitutions: {}
urubatan
tu ta sando o hibernate 1 ainda
só mexi com o 2 até hoje
mas mesmo assim, deveria funcionar
Daniel_Quirino_Olive
Tente rodar o aplicativo em um debugger e veja se não é lançada alguma exceção que talvez você não esteja tratando devidamente.