Java 休眠二级缓存不';I don’我不在OneToOne协会工作

Java 休眠二级缓存不';I don’我不在OneToOne协会工作,java,hibernate,caching,hibernate-cache,Java,Hibernate,Caching,Hibernate Cache,我试图启用Hibernate的二级缓存,但无法避免对OneTONE关系发出多个查询 我的模型是: @Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class Business { @OneToOne(mappedBy = "business", cascade = {CascadeType.REMOVE}, fetch = FetchType.EAGER) private Address ad

我试图启用Hibernate的二级缓存,但无法避免对OneTONE关系发出多个查询

我的模型是:

@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;
}
当我在缓存中使用id为的
Business
运行
session.get(Business.class,id)
时,不会对加载
Business
发出查询,但会对
地址发出查询

我知道Address是关系所有者,在Business cache条目中没有地址.id
信息,但是应用与*ToMany relations相同的机制,为每个字段创建一个新的缓存区域,不可能解决这个问题吗?假设业务1与地址2相关,则在第一次加载后,我的缓存中将有以下区域和条目:

Business
  Business#1         -> [business model]
Business.address
  Business.address#1 -> [2]
Address
  Address#2          -> [address model]
我试图通过使用
@NaturalId
注释
地址.业务
,以及使用
@NaturalIdCache
注释
地址
类来实现它。缓存区域已创建并填充,但
session.get(Business.class,id)
不使用它

我的
Business
模型有更多的一对一关系,其外键在另一端(而不是业务),我们必须一次列出几个关系,因此数据库服务器必须在每个HTTP请求中处理几十个查询


我已经阅读了Hibernate的用户指南、Vlad Mihalcea关于2LC及其内存脱水格式的解释、Baeldung的解释和其他几个StackOverflow答案,但找不到解决此问题的方法。

这方面有更新吗?