iteye_15788 2010-03-12 16:21
浏览 183
已采纳

请教Ehcache结合spring ,hibernate的问题

@Cacheable(modelId = "cache")
public User detail(String id) {
return getSession().get(User.class, id);
}

报org.springmodules.cache.provider.ObjectCannotBeCachedException: The cache can only store implementations of java.io.Serializable

错误

如果改成:

@Cacheable(modelId = "cache")
public User detail(String id) {
return getSession().load(User.class, id);
}

就不报错 ,这是为什么呢

  • 写回答

1条回答 默认 最新

  • wanghaolovezlq 2010-03-15 21:20
    关注

    Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:

    如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
    load()方法可返回实体的代理类实例,而get方法永远直接返回实体类。
    load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog