title: Query Syntax Exception in hibernate
body: <p>I am trying to build a web application in java using jersey and hibernate to retrieve data from database. I am new to hibernate and I am facing with a problem I cannot deal with even by reading and trying different suggestions over the internet. I would really appreciate it if anyone could help me, please. </p>
  
  <p>Below is my full code and the full stack trace of the error. </p>
  
  <p>BookResource.java</p>
  
  <pre><code>import java.util.List;
  
  
  
  import javax.ws.rs.Consumes;
  import javax.ws.rs.DELETE;
  import javax.ws.rs.GET;
  import javax.ws.rs.POST;
  import javax.ws.rs.PUT;
  import javax.ws.rs.Path;
  import javax.ws.rs.PathParam;
  import javax.ws.rs.Produces;
  import javax.ws.rs.core.MediaType;
  import javax.ws.rs.core.MultivaluedMap;
  import javax.ws.rs.core.Response;
  import javax.ws.rs.core.Response.Status;
  
  import com.bookstrore.model.Book;
  //import com.ebook.model.User;
  //import com.ebook.repository.BookRepository;
  import com.bookstrore.repository.BookRepositoryStub;
  
  
  @Path("books")
  public class BookResource {
      //private BookRepository bookRepository=new BookRepositoryStub();
  
      @GET
      @Produces("application/json")
      public List&lt;Book&gt; getBook() {
          BookRepositoryStub book = new BookRepositoryStub();
          List books = book.getBooks();
          return books;
      }
  
      @DELETE
      @Path("{bookId}")
      @Consumes(MediaType.APPLICATION_JSON)
      @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
      public Response delete(@PathParam("bookId") int bookId){
           BookRepositoryStub book = new BookRepositoryStub();
              int count = book.delete(bookId);
              if(count==0){
                  return Response.status(Response.Status.BAD_REQUEST).build();
              }
  
  
          return Response.ok().build();
      }
  
      @PUT
      @Path("{bookId}")
      @Consumes(MediaType.APPLICATION_JSON)
      @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
      public Response update(@PathParam("bookId") int bookId, Book bo){
          BookRepositoryStub book = new BookRepositoryStub();
          int count = book.update(bookId, bo);
          if(count==0){
              return Response.status(Response.Status.BAD_REQUEST).build();
  
      }
          return Response.ok().build();
      }
  
      @POST
      @Path("book")
      @Consumes(MediaType.APPLICATION_JSON)
      @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
      public Response createBook(Book bo){
          bo.setBook_title(bo.getBook_title());
          bo.setBook_author(bo.getBook_author());
          bo.setBook_description(bo.getBook_description());
          bo.setBook_price(bo.getBook_price());
  
          BookRepositoryStub book = new BookRepositoryStub();
          book.createBook(bo);
  
          return Response.ok().build();
      }
  
  }
  </code></pre>
  
  <p>Book.java</p>
  
  <pre><code>package com.bookstrore.model;
  
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.Table;
  
  @Entity
  
  @Table(name="book")
  public class Book {
  
      @Id
      @GeneratedValue(strategy=GenerationType.IDENTITY)
      private int book_id;
      @Column
      private String book_title;
      @Column
      private String book_author;
      @Column
      private String book_description;
      @Column
      private int book_price;
      public int getBook_id() {
          return book_id;
      }
      public void setBook_id(int book_id) {
          this.book_id = book_id;
      }
      public String getBook_title() {
          return book_title;
      }
      public void setBook_title(String book_title) {
          this.book_title = book_title;
      }
      public String getBook_author() {
          return book_author;
      }
      public void setBook_author(String book_author) {
          this.book_author = book_author;
      }
      public String getBook_description() {
          return book_description;
      }
      public void setBook_description(String book_description) {
          this.book_description = book_description;
      }
      public int getBook_price() {
          return book_price;
      }
      public void setBook_price(int book_price) {
          this.book_price = book_price;
      }
  
  
  }
  </code></pre>
  
  <p>SessionUtil.java</p>
  
  <pre><code>package com.bookstrore.model;
  
  //import javax.imageio.spi.ServiceRegistry;
  
  import org.hibernate.Session;
  
  import org.hibernate.SessionFactory;
  import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
  import org.hibernate.cfg.Configuration;
  import org.hibernate.service.ServiceRegistry;
  
  public class SessionUtil {
  
      private static SessionUtil instance=new SessionUtil();
      private SessionFactory sessionFactory;
  
      public static SessionUtil getInstance(){
              return instance;
      }
  
      //@SuppressWarnings("deprecation")
      private SessionUtil(){
          Configuration configuration = new Configuration();
          configuration.configure("hibernate.cfg.xml");
          ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                  configuration.getProperties()).build();
          sessionFactory = configuration.buildSessionFactory(serviceRegistry);
          //return sessionFactory;
          //sessionFactory = configuration.buildSessionFactory();
      }
  
      public static Session getSession(){
          Session session =  getInstance().sessionFactory.openSession();
  
          return session;
      }
  }
  </code></pre>
  
  <p>BookRepositoryStub.java</p>
  
  <pre><code>package com.bookstrore.repository;
  
  import java.util.ArrayList;
  
  
  import java.util.List;
  
  import org.hibernate.Transaction;
  import org.hibernate.Session;
  import org.hibernate.Query;
  
  import com.bookstrore.model.Book;
  import com.bookstrore.model.SessionUtil;
  //import com.pluralsight.model.User;
  
  public class BookRepositoryStub {
  
      public void createBook(Book book) {
           Session session = SessionUtil.getSession();        
              Transaction tx = session.beginTransaction();
              createBook(session,book);        
              tx.commit();
              session.close();
  
      }
  
      private void createBook(Session session, Book bo){
          Book book=new Book();
  
          book.setBook_id(bo.getBook_id());
          book.setBook_title(bo.getBook_title());
          book.setBook_author(bo.getBook_author());
          book.setBook_description(bo.getBook_description());
          book.setBook_price(bo.getBook_price());
  
  
          session.save(book);
      }
  
      public List&lt;Book&gt; getBooks(){
          Session session = SessionUtil.getSession();    
          Query query = session.createQuery("select from book");
          List&lt;Book&gt; books =  query.list();
          session.close();
          return books;
      }
      public int delete(int id){
          Session session = SessionUtil.getSession();
          Transaction tx = session.beginTransaction();
          String hql = "delete from book where id = :book_id";
          Query query = session.createQuery(hql);
          query.setInteger("id",id);
          int rowCount = query.executeUpdate();
          System.out.println("Rows affected: " + rowCount);
          tx.commit();
          session.close();
          return rowCount;
      }
  
       public int update(int id, Book bo){
           if(id &lt;=0)  
                 return 0;  
           Session session = SessionUtil.getSession();
              Transaction tx = session.beginTransaction();
              String hql = "update book set book_title = :book_title, book_author = :book_author, book_description = :book_description, book_price = :book_price,  where id = :book_id";
              Query query = session.createQuery(hql);
              query.setInteger("id",id);
              query.setString("book_title",bo.getBook_title());
              query.setString("book_author",bo.getBook_author());
              query.setString("book_description",bo.getBook_description());
              query.setInteger("book_price",bo.getBook_price());
  
              int rowCount = query.executeUpdate();
              System.out.println("Rows affected: " + rowCount);
              tx.commit();
              session.close();
              return rowCount;
      }
  
  
  
  }
  </code></pre>
  
  <p>hibernate.cfg.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;
  &lt;hibernate-configuration&gt;
   &lt;session-factory name="hibernateSessionFactory"&gt;
    &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
    &lt;property name="hibernate.connection.password"&gt;behari&lt;/property&gt;
    &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/ebooks&lt;/property&gt;
    &lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt;
    &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
    &lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;
    &lt;property name="hibernate.format_sql"&gt;true&lt;/property&gt;
  &lt;!--   &lt;property name="hibernate.hbm2ddl.auto"&gt;create&lt;/property&gt; --&gt;
    &lt;mapping class="com.bookstrore.model.Book"/&gt;
   &lt;/session-factory&gt;
  &lt;/hibernate-configuration&gt;
  </code></pre>
  
  <p>The full stack trace:</p>
  
  <pre><code> &lt;pre&gt;javax.servlet.ServletException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: from near line 1, column 8 [select from book]
      org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:487)
      org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)
      org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)
      org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)
      org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)
      org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  &lt;/pre&gt;
          &lt;/p&gt;
          &lt;p&gt;
              &lt;b&gt;root cause&lt;/b&gt;
              &lt;pre&gt;org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: from near line 1, column 8 [select from book]
      org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:91)
      org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:109)
      org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:304)
      org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:203)
      org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
      org.hibernate.engine.query.spi.HQLQueryPlan.&amp;lt;init&amp;gt;(HQLQueryPlan.java:131)
      org.hibernate.engine.query.spi.HQLQueryPlan.&amp;lt;init&amp;gt;(HQLQueryPlan.java:93)
      org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
      org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
      org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
      org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836)
      com.bookstrore.repository.BookRepositoryStub.getBooks(BookRepositoryStub.java:42)
      com.bookstrore.BookResource.getBook(BookResource.java:33)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      java.lang.reflect.Method.invoke(Unknown Source)
      org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
      org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
      org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
      org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
      org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
      org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
      org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
      org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
      org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
      org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
      org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
      org.glassfish.jersey.internal.Errors.process(Errors.java:315)
      org.glassfish.jersey.internal.Errors.process(Errors.java:297)
      org.glassfish.jersey.internal.Errors.process(Errors.java:267)
      org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
      org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
      org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
      org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471)
      org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)
      org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)
      org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)
      org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)
      org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  &lt;/pre&gt;
  </code></pre>
  
  <p>Please help me! Thank you in advance!</p>