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>
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.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With