Erro [RESOLVIDO]

Olá amigos,
estou tentando salvar os dados no BD mas está dando um erro que eu não sei o que é.

Classe para salvar

[code]public class AdicionarCubo {

public static void main(String[] args) {
	
	Session session = new HibernateFactory().getSession();
	
	Cubo c = new Cubo();
	c.setNome("Teste");
	c.setServidor("Unigranrio");
	c.setConexaoUrl("jdbc:postgresql://localhost:5332/xxxx");
	c.setConexaoUsuario("xxxx");
	c.setConexaoSenha("12345");
	c.setConexaoDriver("org.postgresql.Driver");
	c.setTempoRefresh(1);
	
	CuboDAO cuboDAO = new CuboDAO(session);
	cuboDAO.salvar(c);
	
	
	session.close();

	
}[/code]

Erro

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get next sequence value at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:119) 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:562) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546) at controle.CuboDAO.salvar(CuboDAO.java:22) at dominio.AdicionarCubo.main(AdicionarCubo.java:24) Caused by: org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:98) ... 11 more

Alguem poderia me ajudar? :frowning:

Vlw!!!

Sua definição da sequence para o id da classe Cubo está errada, qualquer poste o fonte desta classe ae.

[]'s

Essa é a classe Cubo.

[code]@Entity
public class Cubo {

@Id @GeneratedValue
private int idcubo;

@Column (nullable = true)
private String nome;

@Column (nullable = true)
private String servidor;

@Column (name = "conexao_url", nullable = true)
private String conexaoUrl;

@Column (name = "conexao_usuario", nullable = true)
private String conexaoUsuario;

@Column (name = "conexao_senha", nullable = true)
private String conexaoSenha;

@Column (name ="conexao_driver", nullable = true)
private String conexaoDriver;

@Column (name = "tempo_refresh")
private int tempoRefresh;


public int getIdcubo() {
	return idcubo;
}
public void setIdcubo(int idcubo) {
	this.idcubo = idcubo;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getServidor() {
	return servidor;
}
public void setServidor(String servidor) {
	this.servidor = servidor;
}
public String getConexaoUrl() {
	return conexaoUrl;
}
public void setConexaoUrl(String conexaoUrl) {
	this.conexaoUrl = conexaoUrl;
}
public String getConexaoUsuario() {
	return conexaoUsuario;
}
public void setConexaoUsuario(String conexaoUsuario) {
	this.conexaoUsuario = conexaoUsuario;
}
public String getConexaoSenha() {
	return conexaoSenha;
}
public void setConexaoSenha(String conexaoSenha) {
	this.conexaoSenha = conexaoSenha;
}
public String getConexaoDriver() {
	return conexaoDriver;
}
public void setConexaoDriver(String conexaoDriver) {
	this.conexaoDriver = conexaoDriver;
}
public int getTempoRefresh() {
	return tempoRefresh;
}
public void setTempoRefresh(int tempoRefresh) {
	this.tempoRefresh = tempoRefresh;
}

}[/code]

Se eu tirar o @GeneratedValue da certo, mas ai tenho que colocar o id pq nao fica + automatico.
Pq está acontecendo isso com o @GeneratedValue ?

Então … qdo vc coloca apenas o GeneratedValue ele tenta buscar no banco a sequence de nome: “hibernate_sequence”, que no caso não existe no seu Banco, vc pode configurar nas propriedades do seu hibernate para ele gerar automaticamente o ddl no seu banco, o que faria ele criar a sequence.

Insira o GeneratedValue de novo no seu id e coloque esta propriedade no seu xml de config do hibernate:

<property name="hibernate.hbm2ddl.auto">update</property>

Se for JPA insira isto no seu persistence.xml:

<property name="hibernate.hbm2ddl.auto" value="update"/>

Ve se funfa …

[]'s

Eu não tenho arquivo xml amigo ;/

Editei a msg … ve la

[]'s

eu so tenho hibernate.properties :frowning:

Olá dá uma olhada aqui vê se te ajuda:

http://jroller.com/eliasn/entry/iniciando_no_hibernate_entitymanager_com

[quote=Jarf]eu so tenho hibernate.properties :frowning:

[/quote]

Então da na mesma, isso que eu te passei são propriedades que vc insere tanto no xml qto no .properties, e no seu caso é só inserir isto em qualquer linha do seu arquivo de propriedades:

hibernate.hbm2ddl.auto = update;

[]'s

eu fiz o que vocês 2 indicaram e nao deu certo…

no que vc disse deu o seguinte erro, ice:

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get next sequence value at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:119) 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:562) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546) at controle.CuboDAO.salvar(CuboDAO.java:22) at dominio.AdicionarCubo.main(AdicionarCubo.java:24) Caused by: org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:98) ... 11 more

Va no Postgres e crie a sua sequence:

CREATE SEQUENCE hibernate_sequence START 1;

Ow siga o exemplo que o danielbussade passou e de o mesmo comando no seu postgres com o nome da sequence correspondente.

[]'s

Ice, vc poderia me tirar uma duvida?

eu estava olhando esse exemplo ai q o mauro deu: http://www.guj.com.br/posts/list/38302.java#204040

o que seria o “nome_da_sequencia” ?

malz pela ignorancia… eu sou iniciante ;/

[]'s

Ahh… consegui resolver…
No caso, é a sequencia que vc falou pra eu criar. "hibernate_sequence"
Obrigado pela ajuda galera :wink:

[]'s