修改了一下,增加类型转换。用到了apache的beanutils工具包。
- public static <T> List<T> getEntityObjectListByFullSql(
- final String fullSql, final Class<T> clzz) throws Exception {
- return getHibernateTemplate().execute(
- new HibernateCallback<List<T>>() {
- @Override
- public List<T> doInHibernate(Session session)
- throws HibernateException, SQLException {
- SQLQuery sqlQuery = session.createSQLQuery(fullSql);
- sqlQuery.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> list = (List<Map<String, Object>>) sqlQuery
- .list();
- if (CollectionUtils.isEmpty(list)) {
- return null;
- }
- List<T> result = new ArrayList<T>();
- try {
- PropertyDescriptor[] props = Introspector
- .getBeanInfo(clzz).getPropertyDescriptors();
- for (Map<String, Object> map : list) {
- T t = clzz.newInstance();
- for (Entry<String, Object> entry : map
- .entrySet()) {
- String attrName = entry.getKey()
- .toLowerCase();
- for (PropertyDescriptor prop : props) {
- if (!attrName.equals(prop.getName())) {
- continue;
- }
- Method method = prop.getWriteMethod();
- Object value = entry.getValue();
- if (value != null) {
- value = ConvertUtils.convert(value,
- prop.getPropertyType());
- }
- method.invoke(t, value);
- }
- }
- result.add(t);
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- return result;
- }
- });
- }
相关推荐
总结起来,Hibernate的本地SQL查询功能为我们提供了一种灵活的方式来执行复杂的数据库操作,同时通过`addEntity()`、`addScalar()`和`Transformers.aliasToBean()`等方法,我们可以方便地将查询结果封装成Java对象,...
Hibernate通过提供一种对象-关系映射机制,使得Java对象可以直接与数据库表进行交互,而无需编写大量的SQL语句。这种映射机制使得开发过程更加面向对象,提高了代码的可读性和可维护性。 本书的核心内容可能包括...
Hibernate是一个流行的ORM(对象关系映射)框架,它可以自动处理Java对象和数据库表之间的映射,但仍然需要开发者提供SQL来执行特定的数据库操作。 关于“SQL转Java代码.exe”,这很可能是该工具的可执行文件,适用...
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
《精通Hibernate:Java对象持久化技术详解》这本书深入剖析了Hibernate这一流行的Java对象关系映射(ORM)框架,旨在帮助开发者全面理解并熟练掌握Hibernate的使用。Hibernate是Java开发中的重要工具,它简化了...
通过理解并掌握以上内容,开发者可以有效地利用Hibernate将本地SQL查询结果转换为Java对象,从而提高代码的可读性和维护性。在实际项目中,结合Hibernate的其他功能,如缓存、事务管理等,可以进一步提升开发效率。
虽然HQL是Hibernate提供的面向对象的语言,能够方便地映射到Java对象,但在某些场景下使用原生SQL更加灵活高效,例如: - **复杂查询**:当需要执行复杂的数据库操作时,如分组、聚合、子查询等,原生SQL能更好地...
Hibernate是Java领域广泛应用的对象关系映射(ORM)框架,它为Java应用程序提供了一种透明地访问数据库的方式,将传统的SQL语句转换为面向对象的编程模型。通过Hibernate,开发者可以避免编写大量的JDBC代码,从而...
通过对象-关系映射(ORM),Hibernate可以自动将Java对象转化为数据库中的记录,并反之。这样,开发者无需编写大量的JDBC代码,就能实现数据的增删改查。 二、动态SQL的概念 动态SQL是在运行时根据条件生成不同的...
8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 8.3.4 游离对象的特征 8.4 Session接口的详细用法 8.4.1 Session的save()和persist()...
在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了与数据库的交互,使得开发者可以更专注于业务逻辑而不是底层的SQL操作。本文将详细讲解如何使用Hibernate来编写通用的数据库操作代码,包括插入...
Hibernate 提供了多种方式来执行原生 SQL 语句,其中之一是使用 `Session.createSQLQuery()` 方法,该方法返回一个 `SQLQuery` 对象,该对象提供了执行原生 SQL 语句的方法。 例如,我们可以使用以下代码来执行一个...
Hibernate允许开发者将Java对象与数据库表进行映射,通过对象的CRUD(创建、读取、更新、删除)操作实现对数据库的数据操作。在Hibernate中,我们通常使用注解来定义这些映射,比如`@Entity`表示这是一个可持久化的...
《精通Hibernate:Java对象持久化技术详解》一书聚焦于Java开发中的对象持久化技术,主要围绕Hibernate这一流行ORM框架进行深入探讨。Hibernate是Java世界里的重要工具,它简化了数据库操作,使得开发者可以更加专注...
Hibernate 是一个流行的 ORM(Object-Relational Mapping)框架,广泛应用于 Java 企业应用开发中。为了提高 Hibernate 框架下的对象效率和开发效率,需要对其进行合理的配置。下面将详细介绍 Hibernate 配置参数的...
【精通Hibernate:Java对象持久化技术】主要涵盖了Java应用程序的分层体系结构、软件模型以及对象持久化的概念,特别是如何使用Hibernate这一ORM框架进行持久化操作。以下是详细的知识点解析: 1. **应用程序分层...
在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者通过面向对象的方式操作数据库,而无需直接编写SQL语句。本文将深入探讨如何模仿Hibernate生成SQL语句,以及如何利用Java反射技术来...
在Java应用程序开发中,Hibernate提供了对象关系映射功能,简化了数据库操作,将Java类与数据库表关联起来,使得开发者可以避免编写大量的SQL语句。 描述中的链接指向了一个个人博客,虽然具体内容未给出,但我们...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。在开发过程中,为了调试和优化SQL查询,有时我们需要查看Hibernate生成的完整SQL语句,包括其参数...