如何解决二级缓存和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。
在此先感谢您的帮助。
解决方法
会话是第一级缓存,而不是第二级缓存。
如果没有有关您的配置和错误的更多信息,很难提供更多帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。