Postgres, Hibernate e Spring com erro estranho: "ERRO: relação dual não existe"

Boa tarde,
Estou utilizando o Postgres em um novo projeto e estou pegando esta exception estranha.
Utilizo hibernate Annotation + Spring

Caused by: org.postgresql.util.PSQLException: ERRO: relação "dual" não existe Posição: 15 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:353) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252) at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) at org.apache.commons.dbcp.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:332) at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1249) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221) ... 27 more

minha classe mapeada

@Entity
@SequenceGenerator(name = "SEQ_IMAGEM", sequenceName = "seq_imagem") 
@Table(name = "imagem")
public class Imagem implements Serializable{
	private static final long serialVersionUID = 1L;
	@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_IMAGEM") 
    @Column(name = "id_imagem") 
	private Integer idImagem;
	@Column(name = "nome_imagem") 
	private String nomeImagem;
	@Lob  
	@Column(name = "imagem") 
	private byte[] imagem;

Obrigado e t+

Esse erro é porque seu DIALECT está para Oracle e não para PostgreSQL.

Blz, garcia-jj.
No spring esta definido assim como org.hibernate.dialect.PostgreSQLDialect

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="annotatedClasses">
			<list>
				<value>net.teste.dao.Imagem</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.default_schema">english</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
	</bean>

Desculpe a demora, perdi esse tópico, hehe.

Hmm, mas há algo estranho. O objeto dual existe apenas no Oracle mesmo. A impressão que eu tenho é que ele está usando o dialect do Oracle. O ideal é você colocar o debug da categoria SQL do Hibernate para debug, assim você pode ver qual o SQL gerado e tentar ver se é alguma consulta manual sua e até mesmo entender qual dialect ele está usando.

[2010-02-02 09:54:56,967] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect [2010-02-02 09:54:56,967] INFO org.hibernate.transaction.TransactionFactoryFactory - Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory
Ta setado pra o postgres mano! Ae criei uma outra tabela! mesmo erro.
Fiz conexão via JDBC e funcionou!
Vi em algum forum que o erro é na criação da sequence no postgres 8.
Valeu pela ajuda!

So pode ser a versão que estou utilizando, pois ja usei o postgres e nunca deu estes erros medonhos.
Vou baixar a versão 8.0 e ver o que rola! Estou usando a vs 8.4
Tem alguma conf. a mais na configuração em maquinas windows???
Estou usando windows xp.
Obrigado e t+

Muito estranho. Tenho uma aplicação aqui que usa a 8.4 e o dialect normal. Agora estou em viagem, mas assim que chegar em casa vou pesquisar melhor no meu projeto e vamos comparar os projetos para ver onde é o erro.

Abs

posta o trecho do código de onde é lançada a exceção. será que num tem nenhuma query ai com “select sysdate from dual” ?

Blz Pessoal!

Aqui esta o codigo que faço a chamada:

public static void main(String[] args) throws Exception{ ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring-context.xml"); ImagemDao imagemDao = (ImagemDao)ctx.getBean("imagemDao"); Imagem im = new Imagem(); im.setNomeImagem("teste.jpg"); imagemDao.gravarImagem(im); System.out.println("Funciona poxxx"); }

Exception mais detalhada.

Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create PoolableConnectionFactory (ERRO: relação "dual" não existe
  Posição: 15); nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ERRO: relação "dual" não existe
  Posição: 15)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
	at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
	at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
	at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
	at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:694)
	at net.englishmates.dao.HibernateDAOGenerico.salvar(HibernateDAOGenerico.java:77)
	at net.englishmates.dao.ImagemHibernateDao.gravarImagem(ImagemHibernateDao.java:17)
	at net.englishmates.dao.Teste.main(Teste.java:13)
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ERRO: relação "dual" não existe
  Posição: 15)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
	at org.hibernate.jdbc.AbstractBatcher.prepareSelectStatement(AbstractBatcher.java:123)
	at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:73)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
	at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:697)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
	... 5 more
Caused by: org.postgresql.util.PSQLException: ERRO: relação "dual" não existe
  Posição: 15
	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:353)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
	at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
	at org.apache.commons.dbcp.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:332)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1249)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221)
	... 22 more

Puts! olha so a merda que estava fazendo. Cabeça no oracle da nisto!!!
Como uso o oracle no trampo, não me liguei nesta propriedade.
Valeu pessoal!

<bean id="dataSource" destroy-method="close"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="org.postgresql.Driver" />
		<property name="url" value="jdbc:postgresql:desenvolvimento" />
		<property name="username" value="banco" />
		<property name="password" value="banco" />
		<property name="validationQuery" value="select 1 from dual"/> <-- OLHA O ERRO AQUIIIIII
	</bean>