0

error hibernate mapping

asked 2011-05-11 05:02:00 +0800

jmsbnd gravatar image jmsbnd
27

i've got three tables user, menuuser, userprivilege
userprivilege had 2 foreign key reference

userid (table user)
menuid(table menuuser)

ive got error like this when login to my application:

SEVERE: >>org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [from User where userid like '%admin%']
>>	at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181)
>>	at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
>>	at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:93)
>>	at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:277)
>>	at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
>>...

sorry for my stupid question,, anyone can tell me why?? and how to fix this..
thanks

this is my 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 name="">
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.current_session_context_class">thread</property>
  <property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
  <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.format_sql">true</property>
  <mapping class="com.cb.crudcb.domain.Crud"/>
  <mapping class="com.cb.crudcb.domain.Divisi"/>
  <mapping class="com.cb.crudcb.domain.Menu"/>
  <mapping class="com.cb.crudcb.domain.Menuuser"/>
  <mapping class="com.cb.crudcb.domain.User"/>
  <mapping class="com.cb.crudcb.domain.Userprivilege"/>
 
 </session-factory>
</hibernate-configuration>

user java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.cb.crudcb.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;


import org.hibernate.annotations.Entity;




@SuppressWarnings("serial")
@Entity
@Table(name = "user", catalog = "test", schema = "")

public class User implements Serializable {
@Id
@Basic(optional = false)
@Column(name = "userid",nullable= false, length = 10)
private String userid;

@Column(name = "password", length = 20)
private String password;

@Column(name = "age", length = 3)
private int age;

@Column(name = "phone", length = 15)
private int phone;

@Column(name = "weight", length = 3)
private int weight;

@Column(name = "birthday", length = 20)
@Temporal(javax.persistence.TemporalType.DATE)
private Date birthday ;

@Column(name = "email", length = 50)
private String email;

@Column(name = "memo", length = 200)
private String memo;

@Column(name = "status", length = 1)
private String status;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private Set<Userprivilege> userp = new HashSet<Userprivilege>();

 public User(){
 }

 public User(String userid) {
     this.userid = userid;
 }
     public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
    public int getPhone() {
        return phone;
    }

    public void setPhone(int phone) {
        this.phone = phone;
    }
    
    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
    
    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
    
    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }
    
    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
    
    public Set<Userprivilege> getUserprivilege() {
        return userp;
    }

    public void setUserprivilege(Set<Userprivilege> userp) {
        this.userp = userp;
	}

    public void addUserprivilege(Userprivilege userprivilege) {
        this.userp.add(userprivilege);
    }
      
     @Override
    public int hashCode() {
        int hash = 0;
        hash += (userid != null ? userid.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof User)) {
            return false;
        }
        User other = (User) object;
        if ((this.userid == null && other.userid != null) || (this.userid != null && !this.userid.equals(other.userid))) {
            return false;
        }
        return true;
    }
    @Override
    public String toString() {
        return "com.cb.crudcb.domain.User[id=" + userid + "]";
    }
 }

menuuser java

package com.cb.crudcb.domain;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Entity;


@SuppressWarnings("serial")
@Entity
@Table(name="menuuser", catalog = "test", schema = "")


public class Menuuser implements Serializable {
	
@Id
@Basic(optional = false)
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "menuid", nullable = false, length = 10)
private int menuid;
@Column(name="namamenu", length = 100)
private String namamenu;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "menuuser")
private Set<Userprivilege> userp = new HashSet<Userprivilege>();

public Menuuser(){
	
}
public Menuuser(int menuid) {
    this.menuid = menuid;
}

public int getMenuid() {
    return menuid;
}

public void setMenuid(int menuid) {
    this.menuid = menuid;
}

public String getNamamenu(){
	return namamenu;
}

public void setNamamenu(String namamenu){
	this.namamenu = namamenu;
}

public Set<Userprivilege> getUserprivilege() {
    return userp;
}

public void setUserprivilege(Set<Userprivilege> userp) {
    this.userp = userp;
}

public void addUserprivilege(Userprivilege userprivilege) {
    this.userp.add(userprivilege);
}

}

user privilege java

package com.cb.crudcb.domain;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import org.hibernate.annotations.Entity;



@SuppressWarnings("serial")
@Entity
//@Inheritance(strategy=InheritanceType.JOINED)
//@Table(name="userprivilege", catalog = "test", schema = "")

//@AssociationOverride(name = "pk.user", joinColumns = @JoinColumn(name = "userid"))
//@AssociationOverride(name = "pk.menuuser", joinColumns = @JoinColumn(name = "menuid"))
       


public class Userprivilege implements Serializable{
 
	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO)
	
	@Column(name = "id",nullable= false, length = 10)
	private int id;

	@ManyToOne
    @JoinColumn(name = "user")
	private User userid;
	@ManyToOne
    @JoinColumn(name = "menuuser")
	private Menuuser menuid;
	
	@Column(name = "c", length = 1)
	private String c;
	@Column(name = "r", length = 1)
	private String r;
	@Column(name = "u", length = 1)
	private String u;
	@Column(name = "d", length = 1)
	private String d;
	@Column(name = "a", length = 1)
	private String a;
	
	
	public Userprivilege(){
	}
	
	public Userprivilege(int id) {
	     this.id = id;
	 }
	
	public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
	
	public User getUserid(){
		return userid;
	}
	
	public void setUserid(User userid){
		this.userid = userid;
	}
	
	public Menuuser getMenuid(){
		return menuid;
	}
	public void setMenuid(Menuuser menuid){
		this.menuid = menuid;
	}
	
	public String getC(){
		return c;
	}
	public void setC(String c){
		this.c = c;
	}
	
	public String getR(){
		return r;
	}
	public void setR(String r){
		this.r = r;
	}
	
	public String getU(){
		return u;
	}
	public void setU(String u){
		this.u = u;
	}
	
	public String getD(){
		return d;
	}
	public void setD(String d){
		this.d = d;
	}
	
	public String getA(){
		return a;
	}
	public void setA(String a){
		this.a = a;
	}
	
		   
}

userDAO

package com.cb.crudcb.dao;

import com.cb.crudcb.domain.User;


import java.util.List;
import org.hibernate.Session;
import org.zkoss.zkplus.hibernate.HibernateUtil;

public class UserDAO {

    @SuppressWarnings("unchecked")
	public List<User> findAll() throws Exception {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return (List<User>) session.createCriteria(User.class).list();
    }

    @SuppressWarnings("unchecked")
	public List<User> getUserLogin(String userid) throws Exception {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return (List<User>) session.createQuery("from User where userid like '%"+userid+"%'").list();
    }
    
}

login java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.cb.crudcb.log;

import java.util.List;

import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Textbox;

import com.cb.crudcb.domain.User;
import com.cb.crudcb.dao.UserDAO;
import com.cb.crudcb.web.Encryption;
import com.cb.crudcb.web.Session;

@SuppressWarnings("serial")
public class Login extends GenericForwardComposer{
	private UserDAO usr = new UserDAO();
	private Session s = new Session();
	private Encryption enc = new Encryption();

	private Textbox txtUserid, txtPassword;
	
	public void onOK$txtPassword() throws Exception{
		List<User> cs = usr.getUserLogin(txtUserid.getValue());
		if (cs.size() > 0) {
	         for (final User c : cs) {
	        	String user = new String(c.getUserid());
	        	String password = new String(enc.decodeAndDecrypt(c.getPassword()));
	        	String status = new String(c.getStatus());
	        	if(user.equals(txtUserid.getValue()) && password.equals(txtPassword.getValue()) && status.equals("y")){
	        		s.setSession("userid", txtUserid.getValue());
	        		Executions.sendRedirect("/page/index2.zul");
	        	}else if(user.equals(txtUserid.getValue())&& password.equals(txtPassword.getValue()) && status.equals("n")){
	        		 Messagebox.show("Username expired!! Please contact administrator", "Information", Messagebox.OK, Messagebox.INFORMATION); 
	        	        		
	        	} else {
	        		 Messagebox.show("Wrong Password or Username", "Information", Messagebox.OK, Messagebox.INFORMATION);
	        		System.out.println("Wrong Password!");
	  	      	}
	         }
	      } else {
	    	  Messagebox.show("User id doesn't exist or expired", "Information", Messagebox.OK, Messagebox.INFORMATION); 
	         System.out.println("KOSONG!");
	      }
	}
	
	
	public void onClick$btnLogin() throws Exception{
		List<User> cs = usr.getUserLogin(txtUserid.getValue());
		if (cs.size() > 0) {
	         for (final User c : cs) {
	        	String user = new String(c.getUserid());
	        	String password = new String(enc.decodeAndDecrypt(c.getPassword()));
	        	String status = new String(c.getStatus());
	        	if(user.equals(txtUserid.getValue()) && password.equals(txtPassword.getValue()) && status.equals("y")){
	        		s.setSession("userid", txtUserid.getValue());
	        		Executions.sendRedirect("/page/index2.zul");
	        	}else if(user.equals(txtUserid.getValue())&& password.equals(txtPassword.getValue()) && status.equals("n")){
	        		 Messagebox.show("Username expired!! Please contact administrator", "Information", Messagebox.OK, Messagebox.INFORMATION); 
	        	        		
	        	} else {
	        		 Messagebox.show("Wrong Password or Username", "Information", Messagebox.OK, Messagebox.INFORMATION);
	        		System.out.println("Wrong Password!");
	  	      	}
	         }
	      } else {
	    	  Messagebox.show("User id doesn't exist or expired", "Information", Messagebox.OK, Messagebox.INFORMATION); 
	         System.out.println("KOSONG!");
	      }
	}
}
	

delete flag offensive retag edit

4 Replies

Sort by ยป oldest newest

answered 2011-05-11 05:44:26 +0800

terrytornado gravatar image terrytornado flag of Germany
9393 3 7 16
http://www.oxitec.de/

updated 2011-05-11 05:51:37 +0800

For testing have a try with the full qualified name of your Object in the hql statement like this thread.
Can be that hibernate uses internal the word 'user'.

   . . .
   return (List<User>) session.createQuery("from com.cb.crudcb.domain.User where userid like '%"+userid+"%'").list();

best
Stephan

link publish delete flag offensive edit

answered 2011-05-11 22:04:17 +0800

jmsbnd gravatar image jmsbnd
27

hi Stephan

i changed it with

 . . .
   return (List<User>) session.createQuery("from com.cb.crudcb.domain.User where userid like '%"+userid+"%'").list();


not error
but it still cannot login to my app
the output is the Messagebox.show("Username expired!! Please contact administrator", "Information", Messagebox.OK, Messagebox.INFORMATION);

thks stephan

link publish delete flag offensive edit

answered 2011-05-12 03:44:03 +0800

terrytornado gravatar image terrytornado flag of Germany
9393 3 7 16
http://www.oxitec.de/

updated 2011-05-12 03:47:01 +0800

First, let me say that i don't understand why the method getUserLogin() gives back a java.util.list and not a single Object. I hope each user entry in the db is unique.

sample (from my hibernate environment):

	
        @SuppressWarnings("unchecked")
	@Override
	public Customer getCustomerByID(long id, long tenantId) {
		DetachedCriteria criteria = DetachedCriteria.forClass(Customer.class);
		criteria.add(Restrictions.eq("id", id));
		criteria.add(Restrictions.eq("tenantId", tenantId));

		return (Customer) DataAccessUtils.uniqueResult(getHibernateTemplate().findByCriteria(criteria));
	}

Test your code again (attached a quick dirty code) which results a single object and made the modifications in your onClick method code.

   
        @SuppressWarnings("unchecked")
	public User getUserLogin(String userid) throws Exception {
        Session session = HibernateUtil.getSessionFactory().openSession();
        List<User>) list = session.createQuery("from User where userid like '%"+userid+"%'").list();

       return list.get(0);
    }

best
Stephan

link publish delete flag offensive edit

answered 2011-05-12 23:46:21 +0800

jmsbnd gravatar image jmsbnd
27

thanks stephan :D

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2011-05-11 05:02:00 +0800

Seen: 703 times

Last updated: May 12 '11

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More