二级缓存和session.save

问题描述

| session.delete之后,不会刷新缓存中实体上的集合。 这是我的关系:  -模型可以为特定用户使用0到N个书签。  -模型的原始键是一个id  -书签的主键是一对(idModele,loginUser) 问题是,如果我用一个书签保存模型1。它们被放置在二级缓存中。如果我在一个事务中使用bookmarkDao.delete删除此书签,则即使在新事务中,它仍在modele.getBookmarks()中。缓存似乎尚未更新。 这是我的hbm文件: 模型
 <class name=\"Modele\" table=\"modele\"  batch-size=\"10\">
<cache usage=\"read-write\"/>
 <id name=\"id\" column=\"id_composant\" unsaved-value=\"0\">
  <generator class=\"sequence\">
    <param name=\"sequence\">composant_id_composant_seq</param>
  </generator>
</id>

<set name=\"bookmarks\" table=\"bookmark\" cascade=\"all\" access=\"field\" >
  <cache usage=\"read-write\"/>
  <key column=\"id_modele\" />
  <element column=\"username\" type=\"string\"/>
</set>
书签
 <class name=\"Bookmark\" table=\"bookmark\">  
 <cache usage=\"read-write\"/>
<composite-id>
  <key-many-to-one name=\"modele\" column=\"id_modele\" access=\"field\" />
  <key-property name=\"username\" column=\"username\"/>
</composite-id>
</class>
班级
public class Bookmark implements Serializable {
private static final long serialVersionUID = 1L;

private Modele modele;
private String username;

public Modele getModele() {
    return modele;
}
public void setModele(Modele modele) {
    this.modele = modele;
}

public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
@Override
public int hashCode() {

    final int prime = 31;
    int result = 1;
    result = prime * result + ((modele == null) ? 0 : modele.hashCode());
    result = prime * result + ((username == null) ? 0 : username.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Favori other = (Favori) obj;
    if (modele == null) {
        if (other.modele != null)
            return false;
    } else if (!modele.equals(other.modele))
        return false;
    if (username == null) {
        if (other.username != null)
            return false;
    } else if (!username.equals(other.username))
        return false;
    return true;
}
} 我想念什么吗? 我正在使用带有Maven,spring core,tx ... 3.0的Hibernate Core 3.6.3.Final&Ehcache 2.2.0。 在此先感谢您的帮助。     

解决方法

会话是第一级缓存,而不是第二级缓存。 如果没有有关您的配置和错误的更多信息,很难提供更多帮助。