2011-05-26 101 views
0

在session.delete之後,高速緩存中實體上的集合不刷新。二級高速緩存和session.save

這是我的關係:
- 模型可以有0到N個用於特定用戶的書籤。
- 模型的primaky鍵是一個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; 
} 

}

我是否錯過了什麼?

我正在使用Hibernate Core 3.6.3.Final & Ehcache 2.2.0與Maven,spring core,tx ... 3.0。

在此先感謝您的幫助。

回答

2

會話是第一級緩存,而不是第二級緩存。

沒有關於您的配置和錯誤的更多信息,很難提供更多幫助。

+0

我使用Hibernate Core 3.6.3.Final&Ehcache 2.2.0 – 2011-05-26 21:10:43