gpt4 book ai didi

java - 奇怪的 hibernate 缓存行为

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:48 24 4
gpt4 key购买 nike

我使用ehcache和hibernate 3.6.7 Final。这是一个伪代码示例,揭示了缓存问题。

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class A{

long id;

@OneToMany(mappedBy = "aId", targetEntity = B.class, fetch = FetchType.LAZY)
@Fetch(value = FetchMode.JOIN)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
protected Set<B> fieldB;
}


@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class B {

long id;

long bId;
}

1) 当我第一次从 hibernate 加载实体 A 时,它不会读取 fieldB。这是可以的 - 因为 FetchType.LAZY 已设置。

2) 第二次加载实体 A 时,我看到 sql 查询检索实体 A JOIN 实体 B。

3)如果去掉@Fetch(value = FetchMode.JOIN),第2点将不会执行。

那么问题是这个错误还是功能?我怎样才能避免这种潜在的事情。

最佳答案

您有两个冲突的提取,您绝对不想在列上指定提取和 @Fetch 注释,因为它将提供不可预测的行为。

关于java - 奇怪的 hibernate 缓存行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11050428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com