小编Hei*_*its的帖子

Hibernate 二级缓存不适用于 OneToOne 关联

我正在尝试启用 Hibernate 的二级缓存,但无法避免为 OneToOne 关系发出多个查询。

我的模型是:

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

    @OneToOne(mappedBy = "business", cascade = {CascadeType.REMOVE}, fetch = FetchType.EAGER)
    private Address address;
}

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

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "business_id", unique = true, nullable = false, foreignKey = @ForeignKey(name = "fk_business_id"))
    private Business business;
}
Run Code Online (Sandbox Code Playgroud)

当我在缓存中使用 with id 运行时,不会发出加载查询,session.get(Business.class, id)Business会发出.idBusinessAddress

我知道 Address 是关系所有者,并且在 Business 缓存条目中没有Address.id信息,但是通过应用与 *ToMany 关系相同的机制,为每个字段创建一个新的缓存区域,是否可以解决这个问题?假设业务 1 与地址 2 …

java caching hibernate hibernate-cache

5
推荐指数
0
解决办法
380
查看次数

标签 统计

caching ×1

hibernate ×1

hibernate-cache ×1

java ×1