2017-09-10 3 views
0

マッピングされたコレクションキャッシュに関する奇妙な問題があります。コレクションマッピングに関する問題

は今、私は2つのクラスがあります:私は初めて私の選択のコードを実行すると私のHibernateのキャッシュの設定が

props.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.EhCacheProvider"); 
    props.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.EhCacheRegionFactory"); 
    props.setProperty("hibernate.cache.use_second_level_cache", "true"); 
    props.setProperty("hibernate.cache.use_query_cache", "true"); 
    factoryBean.setHibernateProperties(props); 

ある

@Entity 
@Table(name = "mods", catalog = "artfunpw") 
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) 
public class Mod implements java.io.Serializable { 
*** 
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "mods") 
    @OrderBy("ReleaseDate desc") 
    @Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) 
    public Set<ModVersion> getModsVersionses() { 
     return this.modsVersionses; 
    } 
*** 

@Entity 
@Table(name = "mods_versions", catalog = "artfunpw", uniqueConstraints = @UniqueConstraint(columnNames = "VersionNumber")) 
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) 
public class ModVersion implements java.io.Serializable { 

Session s = sessionFactory.getCurrentSession(); 
     List<ModVersion> modVersions = s.createQuery("select m.modsVersionses from Mod m") 
       .setCacheable(true) 
       .list(); 

私は

[[email protected], [email protected], [email protected]] 

のようなコレクションを得たが、2回目の呼び出しに私がヌルのコレクションを持っています:

[null, null, null] 

私は何を間違っているとどのようにヌルの代わりに、予想されるオブジェクトを防ぐためにしていますか?

ありがとうございました! 、私は

select o from Mod m join m.modsVersionses o 

select m.modsVersionses from Mod m 

からクエリを再書いた後

答えて

0

奇妙なは、それは固定しかし、私は知らないが、なぜそれが起こったと、なぜそれが2番目のクエリでキャッシュされました両方が同じSQLクエリに変換されるため、

select 
     modsversio1_.id as id1_2_, 
     modsversio1_.BuiltWithGameVersion as BuiltWit2_2_, 
     modsversio1_.Description as Descript3_2_, 
     modsversio1_.DownloadCount as Download4_2_, 
     modsversio1_.DownloadCountExeFile as Download5_2_, 
     modsversio1_.DownloadUrl as Download6_2_, 
     modsversio1_.DownloadUrlExeFile as Download7_2_, 
     modsversio1_.modId as modId10_2_, 
     modsversio1_.ReleaseDate as ReleaseD8_2_, 
     modsversio1_.VersionNumber as VersionN9_2_ 
    from 
     artfunpw.mods mod0_ 
    inner join 
     artfunpw.mods_versions modsversio1_ 
      on mod0_.id=modsversio1_.modId