[RESOLVIDO]Erro - Hibernate

9 respostas
T

Boa noite, companheiros do fórum.

Estou testando uma aplicação com hibernate seguindo alguns tutoriais.

Versão do hibernate: 3.1.5 Final
Versão do Log4j 1.5.8 e o apache-log4j 1.2.15

Já procurei soluções aqui no fórum. Encontrei algumas parecidas mas nenhuma resolvida ou nenhum específica a este mesmo erro.

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:164)
	at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:80)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
	at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:438)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:91)
	at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383)
	at AmigoDAO.<init>(AmigoDAO.java:11)
	at TesteAmigo.main(TesteAmigo.java:21)

Agradeço antecipadamente a atenção,

Até mais!

9 Respostas

T

Atualizei a JRE e agora o erro é outro:

org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:107) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:138) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383) at AmigoDAO.<init>(AmigoDAO.java:11) at TesteAmigo.main(TesteAmigo.java:21)

L

veja se este post ti ajuda.

http://blog.camilolopes.com.br/jsf-hibernate-mysql-no-eclipse/

Lá eu falo sobre os arquivos do hibernate, mas qualquer duvida, leia o arquivo README que tem dentro do proprio framework. lá ele informa os arquivos required.

abracos,

G

Dá uma conferida no seu hibernate.properties:
Meu exemplo é usando o PostgreSQL:

hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.url jdbc:postgresql://localhost/seubanco
hibernate.connection.username postgres
hibernate.connection.password senha

Ou MySQL:

hibernate.dialect org.hibernate.dialect.MySQLDialect
#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql:///test
hibernate.connection.username user
hibernate.connection.password senha
T
Guevara:
Dá uma conferida no seu hibernate.properties: Meu exemplo é usando o PostgreSQL:
hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.url jdbc:postgresql://localhost/seubanco
hibernate.connection.username postgres
hibernate.connection.password senha
Ou MySQL:
hibernate.dialect org.hibernate.dialect.MySQLDialect
#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql:///test
hibernate.connection.username user
hibernate.connection.password senha

Modifiquei, utilizando o exemplo do PostGres e agora apareceram novos erros :(

org.hibernate.exception.SQLGrammarException: could not get next sequence value
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:128)
	at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:101)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:705)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:693)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:689)
	at AmigoDAO.insert(AmigoDAO.java:17)
	at TesteAmigo.main(TesteAmigo.java:22)
Caused by: org.postgresql.util.PSQLException: ERRO: relação "hibernate_sequence" não existe
  Posição: 17
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
	at org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:108)
	... 12 more
LPJava, Obrigado pelo link. Irei analisar.
G

Mas vc está usando que banco? PostgreSQL ou MySQL?
Deixa a configuração de acordo com o banco que vc está usando.
Outra coisa:

Deixa o Hibernate criar as sequences anotando corretamente as classes.
Exemplo:

@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="id_imovel")
	private Long idImovel;

Se vc criar na mão o banco e depois tentar usar o Hibernate pode dar problema justamente nas IDs, o Hibernate não vai ler o que vc criou lá no banco.
Com essa ID que postei do imóvel o Hibernate cria a sequence assim:

imovel_id_imovel_seq

Se vc criou na mão o banco, tente acessar as tabelas com a sequence nesse padrão.

T

O PostgreSQL…

Pelo que vi agora ele deu erro nessa configuração aqui:

<id name="id_amigo" column="id_amigo" type="int"> <generator class="sequence"/> </id>

G

Editei meu último post.

T

Deu certo!! Obrigado pela ajuda!

G

Faz a anotação apenas e testa, a sequence seria pra vc ver como ele gera no banco, do jeito que eu fiz a minha ID ele gerou aquela sequence. Confere então como estão as suas IDs e deixa o Hibernate gerar isso pra vc.
OK

Criado 13 de maio de 2010
Ultima resposta 14 de mai. de 2010
Respostas 9
Participantes 3