In this section, you will learn about attribute 'alias_to_entity_map' of method 'setResultTransformer' which converts each row of result into a Map.




In this section, you will learn about attribute 'alias_to_entity_map' of method 'setResultTransformer'  which converts each row of result into a Map.

The setResultTransformer( Criteria.ALIAS_TO_ENTITY_MAP )  method converts each row of result into a Map. Complete example is given below:


In the below example, we are fetching three scalars (values) from worker table which are firstname, birth_date, cell_phone. For handling query results, we are using  setResultTransformer( Criteria.ALIAS_TO_ENTITY_MAP )  method which converts each row of result into a Map.

Here is the video tutorial of: "ALIAS_TO_ENTITY_MAP in Hibernate"

The project hierarchy is given below :

The query for creating table worker is given below :

CREATE TABLE `worker` ( 
`worker_id` bigint(10) NOT NULL auto_increment, 
`firstname` varchar(50) default NULL, 
`lastname` varchar(50) default NULL, 
`birth_date` date NOT NULL, 
`cell_phone` varchar(15) NOT NULL, 
PRIMARY KEY (`worker_id`) 



<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>

<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
<property name="">validate</property>

<mapping class="net.roseindia.Worker"/>


package net.roseindia;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Table(name = "worker")
public class Worker {

@Column(name = "worker_id")
private Long workerId;

@Column(name = "firstname")
private String firstname;

@Column(name = "lastname")
private String lastname;

@Column(name = "birth_date")
private Date birthDate;

@Column(name = "cell_phone")
private String cellphone;

public Worker() {


public Worker(String firstname, String lastname, Date birthdate,
String phone) {
this.firstname = firstname;
this.lastname = lastname;
this.birthDate = birthdate;
this.cellphone = phone;


public Long getWorkerId() {
return workerId;

public void setWorkerId(Long workerId) {
this.workerId = workerId;

public String getFirstname() {
return firstname;

public void setFirstname(String firstname) {
this.firstname = firstname;

public String getLastname() {
return lastname;

public void setLastname(String lastname) {
this.lastname = lastname;

public Date getBirthDate() {
return birthDate;

public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;

public String getCellphone() {
return cellphone;

public void setCellphone(String cellphone) {
this.cellphone = cellphone;

package net.roseindia;

import java.util.List;
import java.util.Map;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateNativeScalarQuery {
private static SessionFactory sf;
private static ServiceRegistry serviceRegistry;

public static void main(String[] args) {
try {
Configuration configuration = new Configuration();
.setProperty("hibernate.show_sql", "false");
serviceRegistry = new ServiceRegistryBuilder().applySettings(
sf = configuration.buildSessionFactory(serviceRegistry);
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
System.out.println("***Hibernate Native Scalar Query Example***");
Session session = sf.openSession();
try {
String sql = "SELECT firstname, birth_date,cell_phone FROM worker";
Query query = session.createSQLQuery(sql);
List data = query.list();

for (Object object : data) {
Map row = (Map) object;
System.out.println("First Name: " + row.get("firstname"));
System.out.println("Birth Date: " + row.get("birth_date"));
System.out.println("Cell Phone: " + row.get("cell_phone"));
} catch (HibernateException e) {
if (session.getTransaction() != null)
} finally {


After execution, you will get the following results on console:

***Hibernate Native Scalar Query Example***
First Name: Sushmita
Birth Date: 1987-05-21
Cell Phone: 919595959595
First Name: Nayana
Birth Date: 1987-06-30
Cell Phone: 919191919191
First Name: Sameer
Birth Date: 1981-09-30
Cell Phone: 919191929292

Click Download Source Code

Download Source Code