Hibernate缓存负面命中

时间:2011-03-17 18:19:23

标签: hibernate spring ehcache

我有来自两个不同部门的两张桌子:

客户
ID

国家
姓名,年龄等

结算率(县/州的综合ID)

国家

在Hibernate中,我在复合外键(县/州)上定义了@ManyToOne关系。我跟着这个: Hibernate Annotations

嗯,每个客户都有一个县/州,但并非每个县 - 州对都在结算表中显示。当我加载一些Customer实体时,我得到了关系的EntityNotFoundException异常。基于我在这里阅读(与我相同的问题):JBoss Forums看起来每个关系都需要在那里,尽管你可以打一个@NotFound(action = IGNORE)标签。好吧,我也这样做了,它没有错误,但我仍然有问题。 Hibernate不会缓存负面命中,因此如果找不到县/州对,则忽略该异常,但不会缓存“缺少数据”的知识,因此它会根据需要重新加载关系时间。所以,当我对关系进行左联接获取时,它对我有效。此外,批量提取什么都不做,我必须一次加载一个,我正在谈论成千上万的实体。

我该怎么做才能解决这个问题? DB设计错了吗?谢谢!

1 个答案:

答案 0 :(得分:0)

不幸的是,Hibernate是第二级的(您假设它吗?)缓存不支持使用复合标识符缓存对象。