Hello! I am a non-hibernate user, really, just learning it for the first time. It's version is 3.0.5 and it's running on JBoss 3.2.7. I'm having problems with some code I'm trying to run. The project is to create a login servlet, which runs a SQL query on Oracle 9i via Hibernate, to cross-reference whether the login information exists. Only I'm getting an error when my Login servlet tries to call getNamedQuery("my query's name"). I'm thinking that I must have some kind of naming convention all wrong, but I can't figure it out. It's that or my query string is wrong, but I thought I would get a different message than that it can't find the query? These files look almost identical to my classmate's, so I'm lost. Please help! Thanks!
The error I get:
23:53:37,571 ERROR [Login] Error running Hibernate query
org.hibernate.MappingException: Named query not known: java113.user.Login.FindUser
at org.hibernate.impl.SessionImpl.getNamedQuery(SessionImpl.java:1027)
at java113.user.Login.doGet(Login.java:77)
at java113.user.Login.doPost(Login.java:136)
Code between sessionFactory.openSession() and session.close():
hibSession = sessionFactory.openSession();
logger.debug("Opening a hibernate session.");
logger.debug("Can I print it?" + hibSession);
//Begin a Hibernate transaction
tx = hibSession.beginTransaction();
logger.debug("Can I print the Transaction?" + tx.isActive());
//bring in the email and password to validate
email = req.getParameter("login");
password = req.getParameter("password");
logger.debug("does email have a value? " + email);
//Get the query
query = hibSession.getNamedQuery("java113.user.Login.FindUser").setString("login", email).setString("password", password);
logger.debug("Made it past the getNamedQuery");
//Perform the query
results = query.list();
//Is the user Valid or Invalid?
UserStatus messages = new UserStatus();
if(results.size() > 0) {
url = "/main.jsp";
session.setAttribute("user", results.get(0));
messages.setIsValid(true);
session.setAttribute("messages", messages);
}
else {
url = "/index.jsp";
messages.setIsValid(false);
session.setAttribute("messages", messages);
}
}
catch (org.hibernate.HibernateException he) {
logger.error("Error running Hibernate query", he);
}
finally {
try {
if (tx != null) {
//Commite the transaction
tx.commit();
}
if (hibSession != null) {
//Close the Hibernate session
hibSession.close();
My User.hbm.xml file:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class
name="java113.user.User"
table="USERS"
schema="cmorgan"
dynamic-update="false"
dynamic-insert="false"
>
<id
name="id"
column="USER_ID"
type="java.lang.Integer"
>
<generator class="native">
</generator>
</id>
<property
name="userName"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="USERNAME"
/>
<property
name="password"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="PASSWORD"
/>
<property
name="email"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="EMAIL"
/>
<property
name="userType"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="USER_TYPE"
/>
<property
name="dateCreated"
type="java.util.Date"
update="true"
insert="true"
access="property"
column="DATE_CREATED"
/>
</class>
<query name="java113.user.Login.FindUser">
from User as thisUser where thisUser.email = :login AND thisUser.password = :password
</query>
</hibernate-mapping>
My User.java object
package java113.user;
import java.io.Serializable;
import java.util.*;
/**
* This class is used for validating Users as they login.
*
*@author crmorgan
*/
public class User implements Serializable {
private Integer id;
private String userName;
private String password;
private String email;
private String userType;
private Date dateCreated;
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserType() {
return userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
public String toString() {
StringBuffer sb = new StringBuffer("Login:");
sb.append("id=").append(id);
sb.append(",userName=").append(userName);
sb.append(",password=").append(password);
sb.append(",email=").append(email);
sb.append(",userType=").append(userType);
sb.append(",dateCreated=").append(dateCreated);
return sb.toString();
}
}
|