hibernate生成的dao,调用他查询,我初学,麻烦帮忙看一下

问题描述

public List findAll() {log.debug("finding all User instances");try {String queryString = "from User";Query queryObject = getSession().createQuery(queryString);return queryObject.list();} catch (RuntimeException re) {log.error("find all failed", re);throw re;}} 请问一下 这样要怎么 查询它呢, 它返回的结果类型的List的, 我需要用一个集合来遍历,请问一下需要怎么做呢?还有一个问题public void delete(User persistentInstance) {log.debug("deleting User instance");try {getSession().delete(persistentInstance);log.debug("delete successful");} catch (RuntimeException re) {log.error("delete failed", re);throw re;}} 比如调用它的delete方法 也是必须要用Transaction 然后再执行commit才能执行删除吗? 如果有对这方面了解的麻烦帮下忙,谢谢各位了

解决方案

问题1:你可以这样遍历:for(User user:list){ /**你的操作*/}问题2:如果你使用的是Hibernate,没使用spring,你的hibernate.cfg.xml的相关配置中,一般情况下是没有设置手工提交,默认的是自动提交。 如果使用了spring,则配置文件中会有如下语句:<property name="defaultAutoCommit" value="true"></property>,可见你已你已把默认提交开启,为自动提交方式,如果是false,则为手工提交方式。 如调用它的delete方法 不须要用Transaction 然后再执行commit才能执行删除,数据库的更新操作(add,delete,update),也可不用事务的commit。 用事务只是把对数据库的操作一次性提交,add,delete,update进行的操作已经提交,在事务执行中如果有错误就进行回滚,所以说用事务让数据更加安全,不会导致数据的丢失。
解决方案二:
问题2:如果使用了Spring来管理事务的话,默认不用手工关闭连接、不用手工提交如果只单独使用Hibernate,默认是自动提交的,也不用手工提交,即不用commit如果使用了事务,会通过设置connection.setAutoCommit(false);设置为手工提交方式,然后要事务的最后手工提交connection.commit();
解决方案三:
问题1:这样遍历if (list != null && list.size() > 0) {for (int i = 0; i < list.size(); i++) {User user = (User) list.get(i);}}

时间: 2024-12-30 16:35:38

hibernate生成的dao,调用他查询,我初学,麻烦帮忙看一下的相关文章

内联-麻烦帮忙看下这个SQL查询该怎么改进

问题描述 麻烦帮忙看下这个SQL查询该怎么改进 有三张表,分别是EquipmentMessage,Sensor,SensorInputData,Sensor以 EquipmentMessage的主键equipmentId做外键,SensorInputData则以Sensor的主键sensorId做外键.SensorInputData是大表,可能有千万条数据,另外两个都是小表,最多不会超过200条数据.我的这个查询第二句是一个"*"号,此时查询速度很快,大概170ms,如果我只想要其中个

ssh整合调用自动生成的dao,通过spring配置sessionfactory注入调用报错

问题描述 我用的是ssh整合,自动生成的Dao,但是我不想使用hibernate.cfg.xml,我在sping配置了怎样使用这是spring.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema

mybatis生成的DAO MAPPER 实体类 没有查询全部 添加什么才能出来查询全部

问题描述 mybatis生成的DAO MAPPER 实体类 没有查询全部 添加什么才能出来查询全部 package com.bestteam.base.dao; import com.bestteam.base.entity.User; public interface UserMapper { int deleteByPrimaryKey(String id); int insert(User record); int insertSelective(User record); User se

ssh整合-关于ssh中hibernate生成方法从Action中调用报错main调用不报错

问题描述 关于ssh中hibernate生成方法从Action中调用报错main调用不报错 看图学生求解决没遇到过!我建测试类用main方法进来一点问题都没有正常输出i=1 解决方案 报的什么错,贴出来,,, 解决方案二: 你确定text的userinfo和action的userinfo的内容一样吗? 你在findUserinfonamepwd方法中将name和pwd打印出来看看. 我怀疑你action的参数userinfo是null或者userinfo实例化了,但是name或者pwd是null

KeelKit 开始支持 VC++的 实体类生成 和 存储过程调用接口的生成

我们现在开始支持 VC++的 实体类生成 和 存储过程调用接口的生成!这将大大的方便了一些使用C++的朋友引用Keel.dll! 生成后的代码效果如下: #pragma once #using using namespace System::Security::Permissions; [assembly:SecurityPermissionAttribute(SecurityAction::RequestMinimum, SkipVerification=false)]; // 生成日期:20

hibernate查询问题,各位帮忙

问题描述 小弟想从newsgroup_news表中取出ID=1和ID=2的数量,这张表只有两个字段group_id,new_id分别关联到new表和newsgroup表,hibernate多对多关系已经映射好了,DAO类里该怎么写?publicintgetNewsGroupCount(intid){Stringhql="selectcount(id)fromNewsGroupmwherem.id="+id+"groupbym.id";Queryquery=creat

防SQL注入:生成参数化的通用分页查询语句

前些时间看了玉开兄的"如此高效通用的分页存储过程是带有sql注入漏洞的"这篇文章,才突然想起 某个项目也是使用了累似的通用分页存储过程.使用这种通用的存储过程进行分页查询,想要防SQL注入 ,只能对输入的参数进行过滤,例如将一个单引号"'"转换成两个单引号"''",但这种做法是不安全 的,厉害的黑客可以通过编码的方式绕过单引号的过滤,要想有效防SQL注入,只有参数化查询才是最终 的解决方案.但问题就出在这种通用分页存储过程是在存储过程内部进行SQ

hibernate可不可以根据一个实体类查询出数据库中是否存在该记录

问题描述 hibernate可不可以根据一个实体类查询出数据库中是否存在该记录 需要判断一条记录是否已经在数据库中是否存在重复记录,用hql的话传入的参数会比较多

为什么Hibernate 3中的HQL无法查询汉字

为什么Hibernate 3中的HQL无法查询汉字 使用同样的代码和配置文件,在Hibernate 2上完全没有问题,在Hibernate 3中,使用如下HQL查询,无法得到正确的结果集: String hql = "from story where title like '%汉字%'"; Query q = session.createQuery(hql); 但用下面的HQL查询,却可以得到正确结果集: String hql = " from story where tit