java新手代码大全题

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.
alias_to_entity_map
Questions:
Tutorials:
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:
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
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.
import java.util.D
import javax.persistence.C
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.Id;
import javax.persistence.T
@Table(name = &worker&)
public class Worker {
@GeneratedValue
@Column(name = &worker_id&)
private Long workerId;
@Column(name = &firstname&)
@Column(name = &lastname&)
@Column(name = &birth_date&)
private Date birthD
@Column(name = &cell_phone&)
public Worker() {
public Worker(String firstname, String lastname, Date birthdate,
String phone) {
this.firstname =
this.lastname =
this.birthDate =
this.cellphone =
public Long getWorkerId() {
return workerId;
public void setWorkerId(Long workerId) {
this.workerId = workerId;
public String getFirstname() {
public void setFirstname(String firstname) {
this.firstname =
public String getLastname() {
public void setLastname(String lastname) {
this.lastname =
public Date getBirthDate() {
return birthD
public void setBirthDate(Date birthDate) {
this.birthDate = birthD
public String getCellphone() {
public void setCellphone(String cellphone) {
this.cellphone =
HibernateNativeScalarQuery.java
package net.
import java.util.L
import java.util.M
import org.hibernate.C
import org.hibernate.HibernateE
import org.hibernate.Q
import org.hibernate.S
import org.hibernate.SessionF
import org.hibernate.cfg.C
import org.hibernate.service.ServiceR
import org.hibernate.service.ServiceRegistryB
public class HibernateNativeScalarQuery {
private static SessionF
private static ServiceRegistry serviceR
public static void main(String[] args) {
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();
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)
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();
After execution, you will get the following results on console:
***Hibernate Native Scalar Query Example***
-------------------------------------------
First Name: Sushmita
Birth Date:
Cell Phone:
-------------------------------------------
First Name: Nayana
Birth Date:
Cell Phone:
-------------------------------------------
First Name: Sameer
Birth Date:
Cell Phone:
-------------------------------------------
Advertisements
alias_to_entity_map
Questions:
Tutorials:
alias_to_entity_map
Posted on: May 17, 2012
If you enjoyed this post then why not add us on Google+?
Advertisements
Your Email :
Subject (*):
Your Comment (*):
&2001 - 2017 Rose India Technologies Pvt. Ltd. All Rights are Reserved1517人阅读
在上一篇文章提到了这个方法,在这里再详细谈谈我对这个方法的理解
使用该方法最直接的好处就是可以根据查询的字段名来获取相应的值
&/pre&&p&如下是一个查询多字段时的处理情况:&/p&&p&&/p&&pre name=&code& class=&java&&String sql = &SELECT message_id,app_id FROM message&;
Query query = getSession().createSQLQuery(sql);
List&Object[]& result = query.list();//默认查询出来的list里存放的是一个Object数组
for (Object[] objects : result) {
String message_id = objects[0].toString();
String app_id = objects[1].toString();
System.out.println(message_id+&,&+app_id);
这里使用了Object[ ],这是默认滴,在取值过程中要遍历,比较麻烦
下面我们使用setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)方法
String sql = &SELECT message_id,app_id FROM message&;
Query query = getSession().createSQLQuery(sql);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); // 这样子返回Map
List result = query.list();
for (Object object : result) {
Map obj = (Map)
String message_id = obj.get(&message_id&).toString();
String app_id = obj.get(&app_id&).toString();
System.out.println(message_id+&,&+app_id);
}这里返回Map,就可以直接根据key取相应的值了,更灵活
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13665次
排名:千里之外
原创:17篇
(1)(1)(3)(1)(1)(8)(1)(2)string query = "select a.CustomerName as CustomerName, b.ProductName as ProductName from Customer as a join a.Product as b"
IQuery query = applicationSession.CreateQuery(query);
var listResult = query.SetResultTransformer(NHibernate.Transform.Transformers.AliasToEntityMap).List&Hashtable&();
string customerName = (string)listResult[0]["CustomerName"];
string productName
= (string)listResult[0]["ProductName"];
Views(...) Comments()Java中使用hql,sql查询返回的list&Object& 转成需要的实体对象--方法讲解!
需要将Query对象setResultTransformer:
List list = session.createSQLQuery(sql).setResultTransformer(
Transformers.ALIAS_TO_ENTITY_MAP).list();
//此时,每个Object可以转换成一个Map
Map map = (Map) list.get(i);
map.get(&PARENT_ID&);& //这里的key 一定是 对应的字段名才行
// 查询出数据&&
& String hql = &select a.id as emergencyBasExeId,a.LEVEL as level,a.SEND_TIME as sender_time,a.NAME as name,a.CONTENT as content & +&
&&& &,a.PROCESS_ID as processId,m.STATES as states,m.id as id,m.emergencyInfoSecondMgr.id as emergencySencondMgrId & +&
&&& & from EmergencyInfoFirstExe a,& EventManage m where a.deleteFlag = 0 and a.id=m.emergencyInfoFirstExe.id &;&
& // 查询出数据list&
& List exeList = eventManageDao.notifyHqlPage(hql, pageNumber * pageSize, pageSize);&
& // 返回所需要的数据List&
& List&EventInfoView& reList = new ArrayList&EventInfoView&();&
& //map.get(&PARENT_ID&);& //这里的key 一定是 数据库对应的字段名才行&&
& //对返回List的数据封装 &
& for(Object exe : exeList){&
&& EventInfoView event = new EventInfoView();&
&& //此时,每个Object可以转换成一个Map&&
&& Map map=(Map)&
&& //然后可以使用map.get(&属性名&);即可取值&
&& event.setId(map.get(&id&).toString());&
&& event.setContent(map.get(&content&).toString());&
&& event.setEmergencyBasExeId(map.get(&emergencyBasExeId&).toString());&
&& event.setEmergencySencondMgrId(map.get(&emergencySencondMgrId&).toString());&
&& event.setEmergencyTitle(map.get(&emergencyTitle&).toString());&
&& event.setLevel(map.get(&level&).toString());&
&& event.setName(map.get(&name&).toString());&
&& event.setProcessId(map.get(&processId&).toString());&
&& event.setProcessName(map.get(&processName&).toString());&
&& event.setSender_time(map.get(&sender_time&).toString());&
&& event.setStates(map.get(&states&).toString());&
&& //....&
&& reList.add(event);&
摘自 Hurry的专栏用户名:台前幕后
文章数:15
访问量:25565
注册日期:
阅读量:1297
阅读量:3317
阅读量:432696
阅读量:1120654
51CTO推荐博文
参考:  1、  2、&  在JPA 2.0 中我们可以使用entityManager.createNativeQuery()来执行原生的SQL语句。但当我们查询结果没有对应的实体类时,query.getResultList()返回的是一个List&Object[]&,也就是说每行的数据被作为一个对象数组返回。常见的用法是这样的:public&void&testQuery(){
Query&query&=&entityManager.createNativeQuery("select&id,&message,created&"
+&"from&message&");
List&Object[]&&rows&=&query.getResultList();
for&(Object[]&row&:&rows)&{
("id&=&"&+&row[0]);
("message&=&"&+&row[1]);
("created&=&"&+&row[2]);
}但这样用会使代码非常不容易让人理解, 究竟下标为n的元素到底是什么?不去数查询语句是不知道的,而且一旦查询语句的select部分的顺序被调整,Java代码也要一起调整。这时候我们想如果返回的是Map的话,用起来会清晰的多。  可惜的是JPA的API中并没有提供这样的设置。其实很多JPA的底层实现都是支持返回Map对象的。例如:  EclipseLink 的 query.setHint(QueryHints.RESULT_TYPE, ResultType.Map);  Hibernate 的 query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);  OpenJPA 的&QueryImpl&impl = q.unwrap(QueryImpl.class);&impl.setResultClass(Map.class);  如果项目中用的是其他的ORM实现,可以在代码中选中Query按Ctrl+T 查看具体的实现类,在实现类中有设置返回类型为Map的方法。所以,如果我们想要返回Map并且确定底层用的是某一种JPA的实现时我们可以退而求其次, 牺牲跨实现的特性来满足我们的需求:&  1)、Hibernate&:public&void&testQuery()&{
Query&q&=&entityManager.createNativeQuery("select&*&from&message");
//&将结果转化为&Map&tableKey,&keyValue&
query.unwrap(org.hibernate.SQLQuery.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List&Map&String,&Object&&&list&=&q.getResultList();
for&(Map&String,&Object&&m&:&list)&{
("m:&"&+&m);
}  2)、OpenJPApublic&void&testQuery()&{
Query&q&=&entityManager.createNativeQuery("select&*&from&message");
QueryImpl&impl&=&q.unwrap(QueryImpl.class);
impl.setResultClass(Map.class);
("q:&"&+&q);
List&list&=&q.getResultList();
for&(Map&m&:&list)&{
("m:&"&+&m);
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 JAVA新手 的文章

 

随机推荐