在使用Hibernate查询的时候,我们有时候无法直接查询到某些属性,比如查询保单表PublicPolicy,里面有产品ID,但是页面要显示产品名称,在Product表中。当然,我们也可以采用连表查询的方式,查询出对象数组,比如:
select pd.productName, pp from PublicPolicy pp,Product pd where pp.productCode = pd.productCode
return query.list();
这样,在返回的对象数组就包含了产品名称和对应的这个保单对象。
除此之外,我们还可以通过HASHMAP在页面中直接得到productCode对应的productName
思路如下:
在 DAO 中,查询到所有的产品信息。
try {
Session _session = session == null ? getSession() : session;
String hql = "select productCode, productName from Product order by createDate";
Query query = _session.createQuery(hql);
return query.list();
} catch (Exception e) {
log.error("查询出错!", e);
throw new DaoException("查询出错!");
} finally {
if (session == null) {
closeSession();
}
}
在ACTION中构造HASHMAP
// 方案名称 Map
Map schemes = new HashMap();
try {
List schemelist = SchemeDao.getInstance().getSchemeAll(null);
if(schemelist != null && schemelist.size() > 0){
for(int i=0; i<schemelist.size(); i++){
Object[] objs = (Object[]) schemelist.get(i);
schemes.put(objs[0], objs[1]);
}
}
} catch (DaoException e) {
// TODO Auto-generated catch block
log.error(e);
}
request.setAttribute("schemeMap", schemes);
在页面中可以直接得到产品名称。
<!--<td nowrap>
<%--方案名称--%>
${schemeMap[billDetail.schemeCode] }
</td>
这种方法比较方便灵活,而且不必改变原有的查询,值得借鉴。
分享到:
相关推荐
当然,这种实现方式也有其局限性,例如无法像枚举那样直接使用switch语句,但可以通过自定义`EnumItem`类的方法来实现类似的功能。总的来说,"枚举 HashMap"是一种实用的技巧,可以在某些场景下替代或补充Java的枚举...
描述中的"这是我自己写的,用2种方式实现,可以直接使用,也可以用于学习"意味着这个压缩包中包含两种不同的实现方式。这为开发者提供了多种选择,可以根据实际需求和性能考虑来选择合适的实现。同时,这也是一种...
在IT领域,静态显示键值通常涉及到编程中的数据表示和用户界面设计。在这个场景中,"静态显示键值"可能是指在应用程序中以固定、非交互式的方式展示配置信息、设置参数或者元数据的一种方式。这些键通常是字符串,...
如果不存在,添加到HashMap并设置初始状态。 4. **Checkbox的交互逻辑**: 为了同步Checkbox的状态和HashMap,可以在Checkbox的CheckedChangeListener中更新HashMap。同时,当HashMap的状态改变时,需要同步更新...
虽然这个项目没有直接使用数据库,但JSTL的某些功能可能被用到了类似的数据操作上。 实现数据的增删改查,通常会涉及到以下步骤: 1. 增(Create):创建一个新的数据对象,将相关信息填充到对象中,然后将其添加...
在某些语言中,枚举可以具有方法和属性,从而使其成为一个更强大的工具。 描述中提到的“NULL”可能是指没有具体的描述信息,但我们可以通过标题和标签来推测讨论的内容。标签“源码”和“工具”表明这篇博客可能...
- **HQL(Hibernate Query Language)**:这是一种面向对象的查询语言,它允许开发人员使用类名和属性名来构造查询语句。例如,`from Employee e where e.salary > 50000`。 - **Criteria API**:提供了一种基于...
【Java版简单学生成绩管理系统】是一个初学者或者教学实践中常见的项目,主要目的是通过编程实现对学生成绩的管理,包括录入、查询、修改和统计等功能。这个系统使用Java语言编写,展示了Java在数据处理和界面设计上...
当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...
10. Access查询类型:Access支持多种查询类型,包括选择查询、交叉表查询、参数查询、SQL查询和动作查询。 11. 参照完整性规则:在一对多的关系中,父表字段应设置为主索引,子表字段设置为外键(普通索引),以...
1. 菜单项的Caption和Shortcut属性:Caption属性用于设置菜单项的显示文本,而Shortcut属性则设定与其关联的快捷键。在本题中,快捷键Ctrl+L不会触发Click事件,因为Alt+D是激活子菜单的标准快捷键。 2. UDP通信与...
在某些编程环境中,通过`Picture`属性来设置显示的图片。 #### 数据结构的存储方式(题目18) - **知识点概述**:顺序存储结构是数据结构的一种存储方式,它将数据元素按一定的顺序存放在连续的存储空间中。然而,...
即使子类继承了父类,也无法直接访问父类中被封装的方法,除非它们被声明为`public`或`protected`。 3. **继承**:Java不支持多继承,即一个子类只能有一个父类,但可以通过接口实现多重继承的效果。继承具有传递性...
7. **获取字符串的最后一个字符**:在某些编程语言中,可以通过索引来获取字符串的最后一个字符,但题目中没有提供具体的语言环境,所以无法给出确切的表达式。一般而言,如果是Python,可以使用`str[-1]`,而在C++...
在Java面试中,面试官可能会考察各种各样的技术知识点,以下是一些可能被问到的Java面试题及其详细解释: 1. **final, finally, finalize的区别** - `final` 用于声明不可变的变量、不可覆盖的方法或不可继承的类...
2. **指定初始容量**:对于某些集合类(如`ArrayList`和`HashMap`),允许预先设定初始容量。如果能够大致估计存储元素的数量,通过设置合理的初始容量可以避免不必要的扩容操作,减少哈希冲突和计算成本。 3. **...
7. **SQL多表关联查询**:SQL中的JOIN操作可以实现多表关联查询,包括内连接(INNER JOIN)、外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)等。 8. **AJAX远程数据访问**:关键对象XMLHttpRequest,用于异步通信;关键...
22. DO命令扩展名:在某些编程或脚本环境中,如DOS批处理,DO命令通常与扩展名.PRG或.EXE关联。 23. 数据库系统与文件系统的区别:数据库系统解决了文件系统中的数据冗余和数据独立性问题,提供了一种更高级别的...
分页查询则是指按照一定的规则(如每页显示多少条记录)来分批展示数据,这通常与条件查询结合使用。 #### 子查询 子查询可以在主查询中嵌套使用,作为过滤条件的一部分。子查询可以非常灵活地应用于各种复杂的查询...