hibernate 缓存问题,同步set里数据

小猫王 发布于 2013/01/12 21:44
阅读 459
收藏 0

我用户的Hibernate3,ssh2框架,今天加入OSCache,发现图片被评论后,评论内容取不到;

下面是映射文件配置

这是我的图片类 Userimage;    replyuserimages是对图片的评论

 <class name="com.non.model.Userimage" table="userimage" catalog="hcger">
    <cache usage="read-write"/>
        <id name="imageid" type="java.lang.Long">
            <column name="imageid" />
            <generator class="identity" />
        </id>

  .......

<!--图片评论,主要是这里被缓存了-->

 <set name="replyuserimages" inverse="true" order-by="imreplyid desc">
        <cache usage="read-write"/>
            <key>
                <column name="imageid" />
            </key>
            <one-to-many class="com.non.model.Replyuserimage" />
        </set>

页面评论是用jstl标签取的,${image.replyuserimages};如果我提交一个评论,页面不会显示评论内容;评论数据是已经存进数据库里的,现在肯定是读取的缓存数据;如何同步set里的数据?

加载中
0
小猫王
小猫王

要是我把<cache usage="read-write"/>,这行缓存代码去掉,评论就能立即显示

<set name="replyuserimages" inverse="true" order-by="imreplyid desc">

        <cache usage="read-write"/>
            <key>
                <column name="imageid" />
            </key>
            <one-to-many class="com.non.model.Replyuserimage" />
        </set>
0
小猫王
小猫王

顶个肺... 不知道osc评论和回复是不是id,pid自关联方式做的,哎,没进过软件公司,不知道一般怎么实现的(评论、回复更新较多的,用不用缓存?)。

想了想我的缓存问题,只有这样解决:评论可以直接查询数据库,比如:

① from Comment where articleid=?, 返回一个评论List,就不会产生缓存问题;(我以前用的jstl标签 ${article.comments} 循环取出评论,加入缓存功能后,就取不到新添加的数据,不知道jstl怎么实现的)

② 评论的回复可以这样 from Comment where pid=?,每个评论都这样取回复List,不行;所以就不要缓存,在配置文件的set里不加<cache usage="read-write"/>

不知道有没有更好的办法


返回顶部
顶部