Blue Blue - 1 year ago 254
Java Question

Hibernate error - QuerySyntaxException: users is not mapped [from users]

I'm trying to get a list of all the users from "users" table and I get the following error:

org.hibernate.hql.internal.ast.QuerySyntaxException: users is not mapped [from users]

This is the code I wrote to add/get users:

public List<User> getUsers() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
List<User> result = (List<User>) session.createQuery("from users").list();
return result;

public void addUser(User user) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();

public void addUser(List<User> users) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
for (User user : users) {;

Adding users works, but when I use the getUsers function I get these error.

This is my hibernate config file:

<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.default_schema">test</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

<property name="show_sql">true</property>

<property name="format_sql">true</property>
<property name="">create-drop</property>

<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>

<!-- Mapping files will go here.... -->

<mapping class="model.Company" />
<mapping class="model.Conference" />
<mapping class="model.ConferencesParticipants" />
<mapping class="model.ConferenceParticipantStatus" />
<mapping class="model.ConferencesUsers" />
<mapping class="model.Location" />
<mapping class="model.User" />


and this is my User class:

@Table( name = "Users" )
public class User implements Serializable{

private long userID;
private int pasportID;
private Company company;
private String name;
private String email;
private String phone1;
private String phone2;
private String password; //may be null/empty , will be kept hashed
private boolean isAdmin;
private Date lastLogin;

User() {} //not public on purpose!

public User(int countryID, Company company, String name, String email,
String phone1, String phone2, String password, boolean isAdmin) {
this.pasportID = countryID; = company; = name; = email;
this.phone1 = phone1;
this.phone2 = phone2;
this.password = password;
this.isAdmin = isAdmin;

@GenericGenerator(name="increment", strategy = "increment")
public long getUserID() {
return userID;
public void setUserID(long userID) {
this.userID = userID;

Any idea why I get this error?

Answer Source

In the HQL , you should use the java class name and property name of the mapped @Entity instead of the actual table name and column name , so the HQL should be :

List<User> result = (List<User>) session.createQuery("from User").list();
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download