我解决了。我的原因是执行testSeller()方法前,把整个SellerTest类都执行了一遍(想看看效果,结果里面有个方法是删除数据的,于是悲剧了,数据库都空了。我输出list长度发现是0,然后刷新了数据库才发现数据都没了),数据库里没有数据,所以控制台就没输出。
语法格式错误,是不是有字母拼写错误
没有啊
你在hibernate.cfg.xml中设置了手工管理事务,所以在查询的时候需要开启事务,提交事务。
hibernate 中如果用int 返回值为null的时候会报错,所以一般建议用integer
因为HQL是基于对象查询,你做查询时,其实是对对象的操作。重写Stduent的toString()即可看到查询信息。初学,欢迎指正!
我最近学习也是出现这种问题,自己乱弄了一会好了,自己也不知道是哪里生效的,现在把所有可能列出来
1:检查生成的hibernate.reveng.xml中有没有指定要反向生成的表
2:如果hibernate.reveng.xml文件和hibernate.cfg文件都没有问题,重新启动电脑试试,我的老师跟我说过可能是ecplise工具的原因
没有介绍,自己在课程资源中导入SQL语句到数据库
就是一个普通的工具类,用来生成session,这样会比较方便。不然每次都要自己写重复劳动
序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。最终达到的目的是:1、以某种存储形式使自定义对象持久化;2、将对象从一个地方传递到另一个地方。3、使程序更具维护性
个人认为:第一个是对第二进行封装,加了些判断:if(session!=null){seseion.close()}
我也是,怎么解决
终于找到问题所在了。。。粗心粗心粗心!!!
A文件比B文件多了一个mapping resource
<mapping resource="com/bart/entity/Seller.hbm.xml"/>
敲好Seller.hbm.xml文件出错。。导致报错。。。
1,要用getCurrentSession生产的session,就必须有事务环境,意思就是你必须在调用session方法之前,session.beginTransaction();就算你只是get或者query
2,在事务提交之后,即session.getTransaction().commit()之后,session自动关闭,所以你用getCurrentSession,只需要commit事务,不要去调用session.close()
导入的jar包和程序不匹配,你把本节课的老师上传的资料下载下来,里面有hibernate3的jar包,导入到自己的项目就可以了!希望采纳!!
查询不影响数据库中的数据,是不需要事务的,增删改才需要事务的辅助。
数据库的表里是varchar?
其实取出时的类型是可以和表的类型不一致的,只要数值能够符合转换标准
比如数据库里是'12' 取出来是12是可以的 但是数据库是'12ss'带上非数字就会报错
不过我用的是jdbc,hibernate没试过,你可以自己试验下