Hibernate + PostgreSQL e a Porra do sequence

Ola, pessoal…

To com um projeto da faculdade que tenho que desenvolver uma aplicação JEE, usando percistencia com Hibernate, até ai tudo bem;

O postgresql também, não tem problemas tenho sites em PHP, Objetos DAO, que funcionam perfeitamente. Mas usando o Hibernete da a seguinte mensagem.

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). log4j:WARN Please initialize the log4j system properly. TRANSACAO INICIADA [b]Hibernate: select nextval ('hibernate_sequence')[/b] TRANSACAO EFETIVADA

Aparentemente ele executa, mais da esse cara aqui Hibernate: select nextval (‘hibernate_sequence’), não sei o que fazer.

O Desenho das Entidades Físicas, estão assim:

E o meu mapeamento são os seguinte…

[code]@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@SequenceGenerator(name=“seq”, sequenceName=“hibernate_sequence”)
public abstract class ClienteVO {

@Id
@Column(name="idCliente")
@GeneratedValue(strategy = GenerationType.AUTO, generator="seq")
private Long id;

private String      nomeCliente;
private SexoEnum    sexoCliente;
private Date 	    dataNascimentoCliente;
private String      numeroNacionalCliente;	
private TipoCliente tipoCliente;
private String      loginCliente;
private String      senhaCliente;
private String      emailCliente;
private Date        dataCadastroCliente;
private StatusEnum  statusCliente;
private DeleteEnum  deletedCliente;

@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="idTelefone")	
private List<TelefoneVO> listaTelefone;

@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="idEndereco")		
private List<EnderecoVO> listaEndereco;[/code]

[code]@Entity
@Table(name="“ClienteFisicoVO”")
@PrimaryKeyJoinColumn(name = “idCliente”)
public class ClienteFisicoVO extends ClienteVO {

private String rgCliente;
private String orgaoEmissorCliente;[/code]

Executanto

[code]public class ClienteFisico {

public static void main(String[] args) {

	ClienteFisicoDAO clienteFisicoDAO = new ClienteFisicoDAO();
	
	ClienteFisicoVO clienteFisicoVO = new ClienteFisicoVO();
	
	clienteFisicoVO.setNomeCliente("Romildo Jozue Paiter");
	clienteFisicoVO.setSexoCliente(SexoEnum.MASCULINO);
	clienteFisicoVO.setTipoCliente(TipoCliente.FISICO);
	clienteFisicoVO.setLoginCliente("rpaiter");
	clienteFisicoVO.setSenhaCliente("1234");
	
	clienteFisicoVO.setDataCadastroCliente(new Date());
	clienteFisicoVO.setStatusCliente(StatusEnum.ATIVO);
	
	clienteFisicoVO.setRgCliente("13017497");
	clienteFisicoVO.setOrgaoEmissorCliente("SSP/MT");
	
	
	try {
	
		HibernateHelper.getInstance().beginTransaction();
		
		Serializable id = clienteFisicoDAO.inserir(clienteFisicoVO);
		
		HibernateHelper.getInstance().commitTransaction();
		
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	} [/code]

Hum também quero dizer que eu criei o id da sequencia solicitada no banco.

Estou sem ideia para resolver esse problema será que alguem pode me dar um GRANDE HELP

Valeu pessoal Obrigado.

att

Romildo Paiter

Olá!
Eu tb uso Postgre, tente criar a sequence usando identity:
Exemplo:

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

Abraço!

Ola Guevara, tudo bem…

Olha só, agora pelo menos deu um outro erro
kkk

@[code]Entity
@Table(name=“ClienteVO”) //, schema=“paiterbrindes”
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class ClienteVO {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="idCliente")
private Long id;[/code]

Agora esta gerando esse erro

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). log4j:WARN Please initialize the log4j system properly. TRANSACAO INICIADA Hibernate: /* insert br.com.paiterbrindes.cope.vo.ClienteFisicoVO */ insert into ClienteVO (dataCadastroCliente, dataNascimentoCliente, deletedCliente, emailCliente, loginCliente, nomeCliente, numeroNacionalCliente, senhaCliente, sexoCliente, statusCliente, tipoCliente) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) org.hibernate.exception.SQLGrammarException: could not insert: [br.com.paiterbrindes.cope.vo.ClienteFisicoVO] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2176) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2656) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130) 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:563) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547) at br.com.paiterbrindes.cope.app.dao.DAO.inserir(DAO.java:25) at br.com.paiterbrindes.cope.app.negocio.ClienteFisico.main(ClienteFisico.java:40) Caused by: org.postgresql.util.PSQLException: ERRO: relação "clientevo" não existe Posição: 71 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.executeUpdate(AbstractJdbc2Statement.java:321) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57) ... 17 more

Que relação é no banco ou no Hibernate

A tabela ClienteVO não existe na BD. Pelo que vejo do diagrama acima deveria ser ClientesVO

Veja bem, é importante saber como está no banco, pq o ideal é o Hibernate criar as tabelas e as sequences, se vc criar o banco na mão e depois colocar o Hibernate pra ler pode dar zica, pq podemos esquecer de algum detalhe e ai o Hibernate não consegue trabalhar.
Se no banco está apenas id então seria:

Entity
@Table(name="ClienteVO") //, schema="paiterbrindes"
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class ClienteVO {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

O Column vc usaria apenas se o nome da tabela fosse diferente do nome do atributo, se for diferente vai dar zica com as outras tabelas que estão esperando um idCLiente ou id_cliente, não sei como está o seu banco.
Para facilitar a busca pelo erro, veja como o Hibernate cria as sequences.

Outra coisa, que tipo de tabela é esta?

@Table(name="\"ClienteFisicoVO\"")

Se a sua classe é ClienteFisicoVO deixa a table como:

@Table(name="clientefisicovo")
ou
@Table(name="cliente_fisico_vo")

Aquelas barras lá eu nunca vi alguém colocar numa tabela de banco.
Confira as IDs e o nome das tabelas que vc está colocando.