我们一直在做这种事情-这是我们的做事方式:
定义一个简单的类似于bean的对象来表示报告中的每一行输出:
public class CityStateRevenueReport {private String mId;private String mState;private String mCity;private Double mRevenue;public String getId() { return mId; }public void setId(String i) { mId = i; }public String getState() { return mState; }public void setState(String s) { mState = s; }public String getCity() { return mCity; }public void setCity(String c) { mCity = c; }public Double getReveneue() { return mRevenue; }public void setRevneue(Double d) { mRevenue = d; }}
定义一个hibernate映射文件CityStateRevneueReport.hbm.xml:
<?xml version="1.0" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class entity-name="CityStateRevenueReport"> <id name="Id" type="java.lang.String" column="report_id"> <generator /> </id> <property name="city" type="string" column="city" /> <property name="state" type="string" column="state" /> <property name="revenue" type="double" column="revenue" /> </class> <sql-query name="runReport"> <![CDATA[ SELECt {r.*} FROM (select some_id_value as report_id, state_abbreviation as state, city_name as city, dollar_amount as revenue from -- tables, joins, other SQL insanity ) r ]]> <return alias="r" /> </sql-query> </hibernate-mapping>- 然后运行查询并填充实例:
public List<CityStateRevenueReport> runReport() {List<CityStateRevenueReport> reports = new ArrayList<CityStateRevenueReport>();List<HashMap> maps = session.getNamedQuery("runReport").list()for ( HashMap map : results ) { CityStateRevenueReport report = new CityStateRevenueReport(); report.setState(map.get("state")); report.setCity(map.get("city")); report.setRevenue(Double.parseDouble(map.get("revenue")); reports.add(report);}return reports;}



