随笔分类 -  hibernate

load方法在延迟加载时可能出现的错误。
摘要:load方法与get方法不同,对于数据库表中不存在的id, get方法返回null,load方法则报出ObjectNotFoundException异常。因为load方法默认的认为该id一定是在数据库表中存在的。如果在dao中要利用load方法检索对象的话,那么就要小心它可能的异常,可以这么来处理:public Article findById(java.lang.Integer id) { log.debug("getting Article instance with id: " + id); try { Article instance = (Article) get 阅读全文

posted @ 2009-08-13 10:46 台哥编程课堂 阅读(278) 评论(0) 推荐(0) 编辑

延迟加载时发生no session错误的解决办法
摘要:设置了延迟加载的话,只有在页面上调用对象的非主键属性时,hibernate才会真正进行对数据库的查询,但这时候session已经在dao中被关闭了,所以就会报出no session 的错误。解决办法:在web.xml中配置OpenSessionInViewFilter。 <!-- Hibernate Open Session In View filter--> <filter> <filter-name>osivFilter</filter-name> <filter-class> org.springframework.orm.hi 阅读全文

posted @ 2009-08-13 10:30 台哥编程课堂 阅读(221) 评论(0) 推荐(0) 编辑

hql执行update行为时可能遇到的一个问题。
摘要:今天工作中遇到的问题:执行hql语句“update event set money = money + 100 ”, 老是不能达到效果。原来是因为数据库中的money为null以致不能进行增加的运算。如果是在sql语句中可以这么写:“update event set money = isnull(money,0) + 100”,即先把为空的money转为0再进行运算。但是在hql中找不到这个函数,所以一直没找到很好的解决的办法。于是我只好在执行这条hql语句之前,先执行这么一条语句:“update event set money = 0 where money is null”.如此,就可以达 阅读全文

posted @ 2009-07-31 17:29 台哥编程课堂 阅读(1354) 评论(0) 推荐(0) 编辑

delete和all-delete-orphan在进行删除操作时的不同
摘要:-----------------------------------------------------------------------------------------delete:当通过Session的delete()方法删除当前对象时,级联删除所有关联的对象。delete-orphan:删除所有和当前对象解除关联关系的对象。all-delete-orphan:包含了delete和delete-orphan的行为。------------------------------------------------------------------------------------- 阅读全文

posted @ 2009-06-17 11:06 台哥编程课堂 阅读(7741) 评论(0) 推荐(1) 编辑

Hibernate级联删除的一个错误
摘要:酒店和参照物是一对多的关系: <set name="tbBuildings" inverse="false" cascade="all-delete-orphan"> <key> <column name="hotel_id" not-null="true" /> </key> <one-to-many class="com.TbBuilding" /> </set>删除某个酒店时,应该级联删除掉与它关联 阅读全文

posted @ 2009-06-16 16:50 台哥编程课堂 阅读(421) 评论(0) 推荐(0) 编辑

cascade="all-delete-orphan"时容易出现的一个异常
摘要:// 酒店:hotel 标志物:building// 这二者之间是一对多的关系,一个酒店对应多个标志物。// 酒店的配置文件中设置了对标志物的 cascade="all-delete-orphan"执行如下代码: TbHotelDAO hotelDAO =new TbHotelDAO();TbHotel hotel = hotelDAO.findById(44);hotel.setHotelName("12345");TbBuilding building2 = new TbBuilding();building2.setTbHotel(hotel);b 阅读全文

posted @ 2009-06-02 16:32 台哥编程课堂 阅读(2702) 评论(0) 推荐(0) 编辑

关于Hibernate session 的缓存
摘要:Hibernate session 的缓存实质本身就是一个map,其中保存了实体类对象.这些对象是和数据库中的表相对应的.要进行数据库的增删改,步骤如下:1,通过session的 save/update 等方法来将对象加入缓存或者更新缓存中的对象.(这是代码里可以看到的)2,在某些个时间点,session的缓存被清空,同时根据缓存中对象的变化,执行相应的增删改的sql语句,从而更新数据库.(这些是被hibernate封装的,我们看不见)要进行数据库的查询操作,步骤如下:1,通过session的 find 等方法来查询session的缓存,如果找到需要的对象,则将其返回,如果找不到,则生成相应的 阅读全文

posted @ 2008-12-01 10:34 台哥编程课堂 阅读(583) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示