PSQLException: ERROR: la relación "TABLE_NAME" no existe
Estoy tratando de ejecutar hibernación en un DB PostgreSQL 8.4.2. Cada vez que intento ejecutar un simple código java como:
List<User> users = service.findAllUsers();
Obtuve el siguiente error:
PSQLException: ERROR: relation "TABLE_NAME" does not exist
Ya que tengo la opción hibernate.show_sql opción configurada como verdadera, puedo ver que hibernate está intentando ejecutar el siguiente comando SQL:
select this_.USERNAME as USERNAME0_0_, this_.PASSWORD as PASSWORD0_0_
from "TABLE_NAME" this_
Cuando en realidad, al menos debería ejecutar algo como:
select this_."USERNAME" as USERNAME0_0_, this_."PASSWORD" as PASSWORD0_0_
from "SCHEMA_NAME"."TABLE_NAME" as this_
¿Alguien sabe qué cambios debo hacer para que Hibernate produzca el SQL correcto para PostgreSQL?
He configurado el origen de datos postgreSQL necesario en el archivo applicationContext.xml:
<!-- Use Spring annotations -->
<context:annotation-config />
<!-- postgreSQL datasource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url"
value="jdbc:postgresql://localhost/DB_NAME:5432/SCHEMA_NAME" />
<property name="username" value="postgres" />
<property name="password" value="password" />
<property name="defaultAutoCommit" value="false" />
</bean>
En el mismo archivo, he configurado la fábrica de sesiones con el dialecto PostgreSQL:
<!-- Hibernate session factory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.myPackage.dbEntities.domain.User</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<!-- setup transaction manager -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
Finalmente, la forma en que asigno la clase de dominio a la tabla es:
@Entity
@Table(name = "`TABLE_NAME`")
public class User {
@Id
@Column(name = "USERNAME")
private String username;
¿Alguien ha encontrado un error similar? Cualquier ayuda para resolver este problema será muy apreciada. Tenga en cuenta que la pregunta es diferente para publicarNo se puede usar simplemente el nombre de la tabla PostgreSQL ("la relación no existe")
Disculpas por el largo post.