alias_to_entity_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:
EXAMPLE
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`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
CODE
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> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://192.168.10.13:3306/anky</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="hbm2ddl.auto">validate</property> <mapping class="net.roseindia.Worker"/> </session-factory> </hibernate-configuration>
Worker.java
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;
@Entity
@Table(name = "worker")
public class Worker {
@Id
@GeneratedValue
@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;
}
}
HibernateNativeScalarQuery.java
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();
configuration.configure()
.setProperty("hibernate.show_sql", "false");
;
serviceRegistry = new ServiceRegistryBuilder().applySettings(
configuration.getProperties()).buildServiceRegistry();
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***");
System.out.println("-------------------------------------------");
Session session = sf.openSession();
try {
session.beginTransaction();
String sql = "SELECT firstname, birth_date,cell_phone FROM worker";
Query query = session.createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
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"));
System.out
.println("-------------------------------------------");
}
session.getTransaction().commit();
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
}
}
}
OUTPUT
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 -------------------------------------------