Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

org.hibernate.hql.internal.ast.QuerySyntaxException: table is not mapped

I have example web application Hibernate 4.3.5 + Derby database 10.10.1.1+ Glassfish4.0 with IDE NetBeans 8.0Beta.

I have the next exception:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: CUSTOMERV is not mapped at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189) at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109) at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95) at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:331) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3633) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3522) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206) ... 72 more  

Form from index.xhtml

<h:panelGrid id="panel1" columns="2" border="1"                  cellpadding="5" cellspacing="1">         <f:facet name="header">             <h:outputText value="Add Customer Information"/>         </f:facet>         <h:outputLabel value="First Name:"/>         <h:inputText value="#{customer.firstName}" id="fn"/>         <h:outputLabel value="Last Name:"/>         <h:inputText value="#{customer.lastName}" id="ln"/>         <h:outputLabel value="Email:"/>         <h:inputText value="#{customer.email}" id="eml"/>         <h:outputLabel value="Date of Birth:"/>         <h:inputText value="#{customer.sd}" id="s"/>         <f:facet name="footer">             <h:outputLabel value="#{customer.msg}" id="msg" styleClass="msg"/>             <h:commandButton value="Save" action="#{customer.saveCustomer}">             </h:commandButton>         </f:facet>     </h:panelGrid>  

Customer.java

    package com.javaknowledge.entity;      import com.javaknowledge.dao.CustomerDao;     import java.text.ParseException;     import java.text.SimpleDateFormat;     import java.util.ArrayList;     import java.util.Date;     import java.util.List;     import javax.faces.bean.ManagedBean;     import javax.faces.bean.SessionScoped;     import javax.persistence.*;          @ManagedBean     @SessionScoped      public class Customer implements java.io.Serializable {      private Integer custId;     private String firstName;     private String lastName;     private String email;     private Date dob;     private String sd, msg, selectedname;     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");       public Customer() {     }      public Customer(String firstName, String lastName, String email, Date dob) {         this.firstName = firstName;         this.lastName = lastName;         this.email = email;         this.dob = dob;     }      public String getSd() {         return sd;     }      public void setSd(String sd) {         this.sd = sd;     }      public Integer getCustId() {         return this.custId;     }      public void setCustId(Integer custId) {         this.custId = custId;     }      public String getFirstName() {         return this.firstName;     }      public void setFirstName(String firstName) {         this.firstName = firstName;     }      public String getLastName() {         return this.lastName;     }      public void setLastName(String lastName) {         this.lastName = lastName;     }     @Column(name = "EMAIL")     public String getEmail() {         return this.email;     }      public void setEmail(String email) {         this.email = email;     }      @Column(name = "DOB")     public Date getDob() {         return this.dob;     }      public void setDob(Date dob) {         this.dob = dob;     }      public String getMsg() {         return msg;     }      public void setMsg(String msg) {         this.msg = msg;     }      public String getSelectedname() {         return selectedname;     }      public void setSelectedname(String selectedname) {         this.selectedname = selectedname;     }      public void saveCustomer() {         try {             Date d = sdf.parse(sd);             System.out.println(d);             this.dob = d;         } catch (ParseException e) {             e.printStackTrace();         }         CustomerDao dao = new CustomerDao();         dao.addCustomer(this);         this.msg = "Member Info Saved Successfull!";         clearAll();     }     public void updateCustomer() {         try {             Date d = sdf.parse(sd);             System.out.println(d);             this.dob = d;         } catch (ParseException e) {             e.printStackTrace();         }         CustomerDao dao = new CustomerDao();         dao.updateCustomer(this);         this.msg = "Member Info Update Successfull!";         clearAll();     }     public void deleteCustomer() {         CustomerDao dao = new CustomerDao();         dao.deleteCustomer(custId);         this.msg = "Member Info Delete Successfull!";         clearAll();     }      public List<Customer> getAllCustomers() {         List<Customer> users = new ArrayList<Customer>();         CustomerDao dao = new CustomerDao();         users = dao.getAllCustomers();         return users;     }      public void fullInfo() {         CustomerDao dao = new CustomerDao();         List<Customer> lc = dao.getCustomerById(selectedname);         System.out.println(lc.get(0).firstName);         this.custId = lc.get(0).custId;         this.firstName = lc.get(0).firstName;         this.lastName = lc.get(0).lastName;         this.email = lc.get(0).email;         this.dob = lc.get(0).dob;         this.sd = sdf.format(dob);     }      private void clearAll() {         this.firstName = "";         this.lastName = "";         this.sd = "";         this.email = "";         this.custId=0;     }     } 

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>   <session-factory>     <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>     <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>     <property name="hibernate.connection.url">jdbc:derby://localhost:1527/derbyDB</property>     <property name="hibernate.connection.username">user1</property>     <property name="hibernate.connection.password">user1</property>     <property name="hibernate.hbm2ddl.auto">create</property>      <property name="c3p0.min_size">1</property>     <property name="c3p0.max_size">5</property>     <property name="c3p0.timeout">300</property>     <property name="c3p0.max_statements">50</property>     <property name="c3p0.idle_test_period">300</property>      <mapping class="com.javaknowledge.entity.Customer" resource="com/javaknowledge/entity/Customer.hbm.xml"/>   </session-factory> </hibernate-configuration> 

Customer.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>   <class name="com.javaknowledge.entity.Customer" table="CUSTOMERV" schema="APP">         <id name="custId" type="java.lang.Integer">             <column name="cust_id" />             <generator class="increment" />         </id>         <property name="firstName" type="string">             <column name="first_name" length="45" not-null="true" />         </property>         <property name="lastName" type="string">             <column name="last_name" length="45" not-null="true" />         </property>         <property name="email" type="string">             <column name="email" length="45" not-null="true" />         </property>         <property name="dob" type="date">             <column name="dob" length="10" not-null="true" />         </property>    </class> </hibernate-mapping> 
like image 599
Vlad Dobrydin Avatar asked Apr 11 '14 17:04

Vlad Dobrydin


2 Answers

Finally I found a mistake! Hope this is useful to someone. When doing a request to the database(in my case it Apache Derby), name of base need write the first letter upper case other in lower case.

This is wrong query:

session.createQuery("select first_name from CUSTOMERV"). 

This is valid query

session.createQuery("select first_name from Customerv").  

And class entity must be same name as database, but I'm not sure.

like image 159
Vlad Dobrydin Avatar answered Sep 20 '22 17:09

Vlad Dobrydin


in HQL query, Don't write the Table name, write your Entity class name in your query like

String s = "from Entity_class name"; query qry = session.createUqery(s); 
like image 27
Sanjeev Kumar Avatar answered Sep 20 '22 17:09

Sanjeev Kumar