I am using hibernate to fetch rows from the table.
List<Work> W= sessionFactory.getCurrentSession().createSQLQuery("Select * from T_WORK ").addEntity(Work.class).list();
This query works fine.
But the below query is not working fine.
List<Work> W= sessionFactory.getCurrentSession().createSQLQuery("Select * from T_WORK WHERE STATUS = 5 ").addEntity(Work.class).list();
I am getting a error as .
could not execute query
Caused by: java.sql.SQLException: Invalid column name
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3711)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:2763)
at oracle.jdbc.driver.OracleResultSet.getTimestamp(OracleResultSet.java:512)
at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$2.doExtract(TimestampTypeDescriptor.java:62)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:254)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:250)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:230)
at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:331)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
at org.hibernate.loader.Loader.getRow(Loader.java:1355)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
at org.hibernate.loader.Loader.doQuery(Loader.java:829)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2542)
I am using Oracle and status column is of the number datatype.
In the workitem class
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "STATUS_CODE", nullable = false)
private Status status;
Where am i wrong?
Thanks in advance.
How i can achieve this?
You are using native
SQLquery. That means, you should use SQL names of your fields. So useSTATUS_CODEinstead ofSTATUS.i.e.
...createSQLQuery("Select * from T_WORK WHERE STATUS_CODE = 5 ")...