在hibernate中的查找某一条记录会用到get,load,但如果查找不到,会抛出异常,我能否告诉网友,资料查找不到,而不会出现500错误异常呢?
//按编号获取一个记录
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)// 关闭事务处理
public Person getPerson(Integer personid) {
  return (Person) sessionFactory.getCurrentSession().get(Person.class,personid);
}

解决方案 »

  1.   

    load方法会抛异常,get只会返回null,但你这样写会抛一个ClassCastException
      

  2.   

    //struts2的Action
    public String show() {
       Person person=personService.getPerson(11);
       ActionContext.getContext().put("person", person); 
       System.out.println(person.getName()); 
       return "add_from";
    }//按编号获取一个记录(接口的实现)
    @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)// 关闭事务处理
    public Person getPerson(Integer personid) {
       return (Person) sessionFactory.getCurrentSession().get(Person.class,personid);
    }
    如何才能找不记录就提示“查找不到”,而不是抛出异常??
      

  3.   

    不会抛出这个异常
    但是person.getName()肯定抛异常
    判断一下,或者写一下try catch不就解决了
      

  4.   

    如果肯定可以查到你就用load ,相反用get
    书上都有啊大哥。