Reputation: 21
While I'm executing a simple select query from HQL I'm getting ERROR: ORA-00933: SQL command not properly ended (select s1_0.id, s1_0.email, s1_0.first_name, s1_0.last_name from Student as s1_0) I know the problem seems to be with the keyword "as" after the table name, though my HQL query is a simple "from Student" I'm confused from where does as keyword is getting appended.
@Entity
@Table(name="Student")
public class Student {
public Student(){
}
public Student(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
@GenericGenerator(
name = "studentSequenceGenerator",
strategy =
"org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "STUDENT_SEQ"),
@Parameter(name = "initial_value", value = "1"),
@Parameter(name = "increment_size", value = "1")
}
)
@Id
@Column(name="id")
@GeneratedValue(generator = "studentSequenceGenerator")
private Long id;
@Column(name="first_name")
private String firstName;
@Column(name="last_name")
private String lastName;
@Column(name="email")
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Student [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]";
}
}
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(Student.class).buildSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
List<Student> std = (List<Student>)session.createQuery("from Student").getResultList();
session.getTransaction().commit();
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
Hibernate: select s1_0.id, s1_0.email, s1_0.first_name, s1_0.last_name from Student as s1_0
Oct 15, 2019 3:01:18 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 933, SQLState: 42000
Oct 15, 2019 3:01:18 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-00933: SQL command not properly ended
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select s1_0.id, s1_0.email, s1_0.first_name, s1_0.last_name from Student as s1_0]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
at org.hibernate.query.internal.AbstractQuery.list(AbstractQuery.java:1311)
at org.hibernate.query.internal.AbstractQuery.getSingleResult(AbstractQuery.java:1328)
at com.hibernate.demo.ReadStudentDemo.main(ReadStudentDemo.java:29)
Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select s1_0.id, s1_0.email, s1_0.first_name, s1_0.last_name from Student as s1_0]
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.sql.results.internal.values.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:103)
at org.hibernate.sql.results.internal.values.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:54)
at org.hibernate.sql.results.internal.values.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:110)
at org.hibernate.sql.results.internal.values.AbstractJdbcValues.next(AbstractJdbcValues.java:32)
at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:72)
at org.hibernate.sql.exec.internal.ListResultsConsumer.consume(ListResultsConsumer.java:57)
at org.hibernate.sql.exec.internal.ListResultsConsumer.consume(ListResultsConsumer.java:24)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:191)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:68)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:167)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:242)
at org.hibernate.query.internal.AbstractQuery.list(AbstractQuery.java:1302)
... 2 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1052)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:537)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:255)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:610)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:253)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:86)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:765)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:921)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1099)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3640)
at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1384)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3687)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1165)
at org.hibernate.sql.results.internal.values.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:98)
... 13 more
Caused by: Error : 933, Position : 73, Sql = select s1_0.id, s1_0.email, s1_0.first_name, s1_0.last_name from Student as s1_0, OriginalSql = select s1_0.id, s1_0.email, s1_0.first_name, s1_0.last_name from Student as s1_0, Error Msg = ORA-00933: SQL command not properly ended
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498)
... 28 more
Oct 15, 2019 3:01:18 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
Upvotes: 1
Views: 881
Reputation: 21
The Issue was with the development version of hibernate ORM jars once those Jars were replaced by the stable version. Everything went smoothly. Also, this forum help identified the issue https://forum.hibernate.org/viewtopic.php?p=2340268
Upvotes: 1
Reputation: 1201
Can you try
List<Student> students = session.createQuery("SELECT a FROM Student a", Student.class).getResultList();
Upvotes: 1