Não consigo conectar ao Oracle com hibernate - Resolvido

Olá Pessoal,

Estou iniciando com java, porém, não consigo conectar minha aplicação com oracle 10g pelo hibernate, utilizo o netbens 6.7 que já tem os jars do hibernate no claspath. A saída diz que a propriedade hibernate.dialect não foi setada, sendo que quando não uso hibernate conecta normalmente. Estou me baseando na apostila FJ21 da Caelum, tentei fazer com eclipse mapeando os jars do hibernate e deu a mesma ocorrência, sendo que em sala de aula consiguimos fazer tudo mas conectando ao Mysql. Abaixo segue o código, a configuração do hibernate e a saida. Agradeço a atenção.

Versões
Oracle: 10.2.0.3.0
Netbeans: 6.7.1
Hibernate: 3.2.5
Hibernate Annotations: 3.3.1.GA

[size=18]Código.[/size]

//////

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraTabelas {
	public static void main(String[] args) {
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Produto.class);
		new SchemaExport(cfg).create(true, true);
	}
}




//////
import javax.persistence.*;

@Entity
public class Produto {
	@Id
	@GeneratedValue
	private Long id;
	private String nome;
	private String descricao;
	private Double preco;
	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 String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Double getPreco() {
		return preco;
	}
	public void setPreco(Double preco) {
		this.preco = preco;
	}
	
	
}

[size=18]Configuração - hibernate.cfg.xml - Criado apartir de um wizard do netbeans[/size]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="hibernate.connection.url">jdbc:oracle:thin:@10.10.0.21:1521:prod</property>
    <property name="hibernate.connection.username">usuario</property>
    <property name="hibernate.connection.password">senha</property>
  </session-factory>
</hibernate-configuration>

[size=18]Saida[/size]

run:
19/08/2010 15:02:31 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.3.1.GA
19/08/2010 15:02:31 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.5
19/08/2010 15:02:31 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
19/08/2010 15:02:31 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
19/08/2010 15:02:31 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
[color=red]Exception in thread "main" org.hibernate.HibernateException: The dialect was not set. Set the property hibernate.dialect.[/color]
        at org.hibernate.dialect.Dialect.instantiateDialect(Dialect.java:233)
        at org.hibernate.dialect.Dialect.getDialect(Dialect.java:211)
        at org.hibernate.dialect.Dialect.getDialect(Dialect.java:226)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:86)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:61)
        at GeraTabelas.main(GeraTabelas.java:10)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

Cara, não sei se é isso, nunca tive esse erro, mas tenta colocar a OracleDialect com a versao do banco (10g,9i,9…etc) eu uso o Express 10g aqui para desenvolvimento e testes, e a propriedade fica

Só que uso JPA com hibernate como implementação, mas tirando as tags deve ser equivalente no hibernate puro.

O erro destacado em vermelho diz tudo.

Você precisa informar qual o dialeto de banco que deseja usar, no seu hibernate.cfg.xml

<property name="hibernate.dialect" value="INSIRA DIALETO AQUI" />

Seu caso seria um desses:

[quote]Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 9i org.hibernate.dialect.Oracle9iDialect
Oracle 10g org.hibernate.dialect.Oracle10gDialect[/quote]

Referência:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

[quote=jaziel.rc]Cara, não sei se é isso, nunca tive esse erro, mas tenta colocar a OracleDialect com a versao do banco (10g,9i,9…etc) eu uso o Express 10g aqui para desenvolvimento e testes, e a propriedade fica

Só que uso JPA com hibernate como implementação, mas tirando as tags deve ser equivalente no hibernate puro.[/quote]
Já fiz isso, sem sucesso, mesmo erro.

Abraço

[quote=cenriqueos][quote=jaziel.rc]Cara, não sei se é isso, nunca tive esse erro, mas tenta colocar a OracleDialect com a versao do banco (10g,9i,9…etc) eu uso o Express 10g aqui para desenvolvimento e testes, e a propriedade fica

Só que uso JPA com hibernate como implementação, mas tirando as tags deve ser equivalente no hibernate puro.[/quote]
Já fiz isso, sem sucesso, mesmo erro.

Abraço[/quote]

Sem sucesso

Faz um favor, coloca todos os códigos postados e o log entre as tags CODE. Clica no botão editar do seu post e depois no editor de texto, tem um botão Code, deixa o código e o log entre essas tags ;D

dai fica assim: org.hibernate.dialect.Oracle10gDialect bem mais fácil a visualização.

Tenta assim:

public class GeraTabelas {
  public static void main(String[] args) {
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
        cfg.addAnnotatedClass(Produto.class);
        new SchemaExport(cfg).create(true, true);
}
}

Dai tira lá do xml, a linha referente ao dialect.

[quote=romarcio]Tenta assim:

public class GeraTabelas {
  public static void main(String[] args) {
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
        cfg.addAnnotatedClass(Produto.class);
        new SchemaExport(cfg).create(true, true);
}
}

Dai tira lá do xml, a linha referente ao dialect.

[/quote]

Também não deu certo.

Tanta outra coisa então, muda a ordem no xml, coloca o dialect como ultima property como no exemplo.

&lt;property name="hibernate.connection.driver_class"&gt;oracle.jdbc.driver.OracleDriver&lt;/property&gt;
&lt;property name="hibernate.connection.url"&gt;jdbc:oracle:thin:@10.10.0.21:1521:prod&lt;/property&gt;
&lt;property name="hibernate.connection.username"&gt;usuario&lt;/property&gt;
&lt;property name="hibernate.connection.password"&gt;senha&lt;/property&gt; 
&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.Oracle10gDialect&lt;/property&gt;

[quote=romarcio]Tanta outra coisa então, muda a ordem no xml, coloca o dialect como ultima property como no exemplo.

&lt;property name="hibernate.connection.driver_class"&gt;oracle.jdbc.driver.OracleDriver&lt;/property&gt; &lt;property name="hibernate.connection.url"&gt;jdbc:oracle:thin:@10.10.0.21:1521:prod&lt;/property&gt; &lt;property name="hibernate.connection.username"&gt;usuario&lt;/property&gt; &lt;property name="hibernate.connection.password"&gt;senha&lt;/property&gt; &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.Oracle10gDialect&lt;/property&gt; [/quote]
Mesmo erro

Cara, que estranho.

Me diz uma coisa, onde vc está colocando o seu hibernate.cfg.xml? Ele está na dentro da pasta SRC ou em outra pasta do projeto?

[quote=romarcio]Cara, que estranho.

Me diz uma coisa, onde vc está colocando o seu hibernate.cfg.xml? Ele está na dentro da pasta SRC ou em outra pasta do projeto?[/quote]

Está dentro da pasta SRC e fora da package

[quote=cenriqueos][quote=romarcio]Cara, que estranho.

Me diz uma coisa, onde vc está colocando o seu hibernate.cfg.xml? Ele está na dentro da pasta SRC ou em outra pasta do projeto?[/quote]

Está dentro da pasta SRC e fora da package

[/quote]

Parece estar no local certo.

Muito sinistro isso. Faz um teste com outro banco, só pra ver se o problema acontece mesmo só com o Oracle. Se for esse o caso, dai tenta mudar os Drives do Oracle por outra versão.

Não deveria estar acorrendo esse problema.

[quote=romarcio][quote=cenriqueos][quote=romarcio]Cara, que estranho.

Me diz uma coisa, onde vc está colocando o seu hibernate.cfg.xml? Ele está na dentro da pasta SRC ou em outra pasta do projeto?[/quote]

Está dentro da pasta SRC e fora da package

[/quote]

Parece estar no local certo.

Muito sinistro isso. Faz um teste com outro banco, só pra ver se o problema acontece mesmo só com o Oracle. Se for esse o caso, dai tenta mudar os Drives do Oracle por outra versão.

Não deveria estar acorrendo esse problema.[/quote]

Então como eu disse antes, quando eu fiz o curso, conseguimos fazer tudo com o mysql, porém hoje com Oracle nada. Amanhã vou tentar com uma base Informix. Mesmo assim já agradeço pela atenção.

Abraço

Eu uso aqui no serviço o Oracle 10g, anteriormente usavamos o 9i, e nunca tive esse problema.

Fiz com uma base Informix e retornou o mesmo erro. Não sei mais o que fazer. Mais alguém?

Abraço

Cara, exclui esse arquivo hibernate.cfg.xml e cria um hibernate.properties

hibernate.connection.username = usuario
hibernate.connection.password = senha
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
hibernate.connection.driver_class = oracle.jdbc.driver.OracleDriver
hibernate.connection.url = jdbc:oracle:thin:@10.10.0.21:1521:prod
hibernate.show_sql = true
hibernate.format_sql = true

[quote=romarcio]Cara, exclui esse arquivo hibernate.cfg.xml e cria um hibernate.properties

hibernate.connection.username = usuario hibernate.connection.password = senha hibernate.dialect = org.hibernate.dialect.Oracle10gDialect hibernate.connection.driver_class = oracle.jdbc.driver.OracleDriver hibernate.connection.url = jdbc:oracle:thin:@10.10.0.21:1521:prod hibernate.show_sql = true hibernate.format_sql = true [/quote]

Funcionou, obrigado pela ajuda e paciencia rs

Abraço