Não consigo conectar ao Oracle com hibernate - Resolvido

17 respostas
C

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)

17 Respostas

J

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.

Tchello

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:

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

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

C

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.

Já fiz isso, sem sucesso, mesmo erro.

Abraço

C

cenriqueos:
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.

Já fiz isso, sem sucesso, mesmo erro.

Abraço

Sem sucesso

romarcio

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.

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.

C

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.

Também não deu certo.

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;
C

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;


Mesmo erro

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?

C

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?

Está dentro da pasta SRC e fora da package

romarcio

cenriqueos:
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?

Está dentro da pasta SRC e fora da package

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.

C

romarcio:
cenriqueos:
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?

Está dentro da pasta SRC e fora da package

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.

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

romarcio

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

C

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

Abraço

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
C

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

Funcionou, obrigado pela ajuda e paciencia rs

Abraço

Criado 19 de agosto de 2010
Ultima resposta 20 de ago. de 2010
Respostas 17
Participantes 4