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

2023-12-04

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

我的模型是:

@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;
}

当我跑步时session.get(Business.class, id)Business带身份证id在缓存中,不发出加载查询Business但它确实是为了Address.

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

Business
  Business#1         -> [business model]
Business.address
  Business.address#1 -> [2]
Address
  Address#2          -> [address model]

我尝试通过注释使其工作Address.business with @NaturalIdAddress与 一起上课@NaturalIdCache。缓存区域已创建并填充,但session.get(Business.class, id)不使用它。

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

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


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 二级缓存不适用于 OneToOne 关联 的相关文章

随机推荐

  • 如何在加载表单 Iframe 后运行 JS 代码并将自定义值放入输入中?

    http dev uniteconferencing com conference account sign free pcode 25u50PT我正在尝试从 url 获取 pcode 值并将其放入 IFRAME 表单中 我使用此代码获取值
  • 针对测试数据库集成测试 Web 服务

    我目前正在构建一个 net Web 应用程序 它使用 WCF Web 服务来允许 Flex 前端访问数据库 我正在 Web 服务上设置一些单元 集成样式测试 并试图找出允许测试访问和修改单独测试数据库中的数据的最佳方法 目前 我的单元测试项
  • Vb.Net - 动态更改文本框背景色的类

    我想知道如何创建一个类来更改表单内每个文本框的背景颜色 更具体 当文本框为空时 文本框背景颜色等于白色 当文本框获得焦点时 文本框的背景颜色发生变化 当文本框有任何文本时 文本框背景颜色会改变 当文本框失去焦点时 文本框的背景颜色会发生变化
  • 在构建我的 C# 项目时,出现“在未引用的程序集中定义”错误,如何解决?

    我已经引用了 System 和 System Data 1 类型 System ComponentModel IListSource 在未引用的程序集中定义 您必须添加对程序集的引用 系统 版本 2 0 0 0 文化 中性 PublicKe
  • 未使用准备好的语句存储数据

    我刚刚学习使用准备好的语句并卡在这里 用正常方法是没有问题的 没有显示任何错误 但数据未存储在数据库中 尽管它显示 已输入数据 db new mysqli localhost root learndb if db gt connect er
  • MySQL 查找每个邮政编码中最贵的

    我有一个名为 产品 的表 其架构 名称 城市 州 邮政编码价格 我想找到给定州的每个邮政编码的最昂贵产品的名称 I wrote SELECT zip code MAX price FROM products WHERE products s
  • 如果一个任务失败则继续执行ant脚本

    我有一个 Ant 脚本 它运行测试然后将我的应用程序部署到 QA 服务器 要部署应用程序 它首先调用sun appserv undeploy 由于各种原因 应用程序可能会也可能不会部署 如果应用程序未部署 则取消部署将失败并且整个脚本将停止
  • 是否可以在不使用临时文件的情况下在批处理文件中嵌入并执行 VBScript?

    人们长期以来一直在批处理文件中嵌入和执行 VBScript 但我见过的所有已发布的解决方案 最初提出这个问题时 涉及写入临时 VBS 文件 例如 在 Windows 批处理文件中嵌入 VBScript 是否可以在批处理中执行嵌入的 VBSc
  • 如何对列表中彼此在 n 以内的元素进行分组

    我有两个清单 list 1 list 2 1 0 3 0 3 15 1 03 6 0 7 0 我想对这个列表进行排序并合并其中的元素 在本例中 0 15彼此的 所以到这结束的时候 list 1其中包含以下值 1 0 1 03 3 0 3 1
  • 在 Rnw 中使用 ggvis 和 knit

    我想知道我是否可以在 Rnw 中使用 ggvis 和 knit 我尝试了以下代码RStudio Version 0 98 1091 但它不起作用 documentclass book usepackage T1 fontenc usepac
  • 具有自定义布局和自定义菜单项的 ActionBar

    我想通过 put 制作自定义操作栏ImageView在中间 并在操作栏的右侧有另一个带有一些信息的图标 如下所示 我已经可以在中间制作 imageview 但问题是 当我膨胀布局时onCreateOptionMenu 并设置showAsAc
  • 如何将事件处理程序委托转换为具有不同签名的事件处理程序委托

    我正在编写的代码实际上是一个 WPF 行为 用于从网格控件中获取所选项目 众所周知 SelectedItems 不是可绑定属性 我实际上使用的是 Telerik RadGridView 但我希望行为对于具有 SelectionChanged
  • Android - “无法加载 Foo:findLibrary 返回 null”

    我知道已经有关于堆栈溢出的错误的帖子 但是从我在 SO 和 Google 上找到的内容来看 与我的问题不符 我正在尝试运行我的应用程序 但是每当调用本机函数时我的程序就会崩溃 并且我得到以下信息LogCat 08 01 09 15 57 4
  • SQL Case Order 按特定顺序

    好吧 我以前问过类似的问题 但我研究过 但没有具体找到这个 我有一个表 需要按字段 OptionName NVarChar 和 IsActive BIT 进行排序 对于 DDL 我需要结果按以下顺序排列 Option A Option B
  • Excel VBA 中出现 Double 类型溢出错误

    我在 Excel VBA 中遇到了溢出错误 并且无法找到解决方法 虽然 Microsoft 的文档表明双精度数的范围应达到 1 8E308 但我收到了明显低于该阈值的数字的溢出错误 我的代码如下 Public Function Fixed
  • Xamarin.Forms v3 中的 MasterDetail + 从右到左

    我正在使用从右到左的新表单功能 除了 MasterDetail 汉堡菜单图标外 它运行良好 它保留在左侧 当本地化发生更改时 我需要将其移至右侧 有什么想法或者有人可以帮助我使用自定义渲染器吗 也不是不可能 但需要一些肮脏的编码 请在此处检
  • 如何旋转 pandas 图中的 x 轴刻度标签

    使用以下代码 import matplotlib matplotlib style use ggplot import matplotlib pyplot as plt import pandas as pd df pd DataFrame
  • LSTM 时间序列会产生偏移预测吗?

    我正在使用 LSTM NN 和 Keras 进行时间序列预测 作为输入特征 有两个变量 降水量和温度 要预测的一个目标是地下水位 尽管实际数据和输出之间存在严重的偏移 见图 但它似乎工作得很好 现在我读到这可能是网络无法正常工作的典型标志
  • 在 mac os 上的 nasm 中编译汇编程序

    所以 我写了一些关于asm的指令 并编译它们 nasm f macho test asm 现在 nasm生成obj文件 test o gcc test o 返回下一个错误 ld 警告 忽略文件 test o 文件是为不受支持的文件构建的 不
  • Hibernate 二级缓存不适用于 OneToOne 关联

    我正在尝试启用 Hibernate 二级缓存 但无法避免为一对一关系发出多个查询 我的模型是 Entity Cache usage CacheConcurrencyStrategy READ WRITE public class Busin