在hibernate框架中使用createSQLQuery查询结果集在前台显示不出来

通过使用

session.createSQLQuery(sql).list();

这个查询的时候,在前台通过

	<s:iterator value="resultRecordEntrys" id="r">		
	<td><s:property value="#r.date" /></td>																	
	<td><s:property value="#r.record" /></td>																
	</s:iterator>	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是修改后的代码: ```java public class CamelCaseResultTransformer<T> implements ResultTransformer { private static final long serialVersionUID = 1L; private Class<T> resultClass; public CamelCaseResultTransformer(Class<T> resultClass) { this.resultClass = resultClass; } @SuppressWarnings("unchecked") @Override public Object transformTuple(Object[] tuple, String[] aliases) { T result; try { result = resultClass.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException("Error creating result object", e); } for (int i = 0; i < tuple.length; i++) { if (tuple[i] != null) { String camelCaseName = toCamelCase(aliases[i]); try { Field field = resultClass.getDeclaredField(camelCaseName); field.setAccessible(true); field.set(result, tuple[i]); } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) { throw new RuntimeException("Error setting field value: " + camelCaseName, e); } } } return result; } @SuppressWarnings("rawtypes") @Override public List transformList(List collection) { return collection; } private String toCamelCase(String name) { String[] parts = name.split("_"); StringBuilder camelCaseName = new StringBuilder(); for (String part : parts) { if (camelCaseName.length() == 0) { camelCaseName.append(part.toLowerCase()); } else { camelCaseName.append(part.substring(0, 1).toUpperCase()); camelCaseName.append(part.substring(1).toLowerCase()); } } return camelCaseName.toString(); } } ``` 在上述代码,我们修改了`CamelCaseResultTransformer`类的构造方法,添加了一个`Class<T>`类型的参数`resultClass`,表示我们要将查询结果转换为该类的对象。在`transformTuple()`方法,我们通过`resultClass.newInstance()`方法创建一个新的`result`对象,并将查询结果转换为驼峰命名的变量名,然后通过反射设置该对象的属性值。最后,我们返回该`result`对象。 使用该自定义`ResultTransformer`的方式如下: ```java Session session = sessionFactory.openSession(); Query query = session.createSQLQuery("SELECT id, first_name, last_name FROM person") .setResultTransformer(new CamelCaseResultTransformer<>(Person.class)); List<Person> resultList = query.getResultList(); session.close(); ``` 在上述代码,我们创建了一个SQL查询查询`person`表的`id`、`first_name`和`last_name`字段。我们通过`setResultTransformer()`方法将查询结果转换为驼峰命名的`Person`对象,并将结果存储在`resultList`。注意,我们在查询结束后需要关闭`Session`对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值