Hibernate 将 NULL 值粘贴到列表中

2023-11-24

我继承了一些使用 Hibernate 的 Java 代码。一些使用此代码的人现在报告说他们到处都遇到 NullPointerExceptions。

我已经能够追踪到这一点,发现当我们执行一个从数据库中提取对象列表的查询时,该查询有一个对象列表(从不同的表中提取),Hibernate 似乎在数据库中留下了漏洞列表(NULL 值)。所以这个列表可能看起来像这样:

Object
Object
NULL
Object

我们用来从数据库中提取信息的代码是:

List<PrinterGroup> groups = 
    this.getSession().createQuery( "from PrinterGroup" ).list();

然后,每个 PrinterGroup 内部都有一个包含 NULL 值的过滤器列表。

虽然我可以四处寻找并找到每个实例,但我们循环遍历此列表并添加 NULL 检查,但我觉得这是一个创可贴修复,并且必须有一种方法告诉 Hibernate 不要拉入 null 值。

EDIT:

  • 我们正在使用 Hibernate 3.2.2

EDIT2:

所以数据库看起来很混乱。 PrinterGroup -> Filter 关系是一对多关系。因此 PrinterGroups 有一个过滤器列表。问题是过滤器列表在从数据库中出来时其中包含空值(顺便说一下,数据库中没有空值)并且列表看起来像上面一样。

EDIT3:

这是 PrinterGroup HBM 中的映射相关部分

<subclass name="PrinterGroup" discriminator-value="PG">
   <list name="filters"
              lazy="true"
              table="PG_FILTER"
               inverse="false"
                cascade="all-delete-orphan">

        <key>
           <column name="PG_ID" not-null="false"/>
        </key>
        <index column="LISTPOSITION"/>
        <one-to-many class="Filter"/>
     </list>

Filter 是一个非常基本的 POJO 映射。


该集合是否映射了<list>(或其他索引集合)和<list-index>?

除了具有 set 和 bag 语义的集合映射之外,所有集合映射都需要集合表中的索引列。索引列是映射到数组索引、列表索引或映射键的列。 ...数组或列表的索引始终为整数类型,并使用元素进行映射。映射列包含默认从零开始编号的连续整数。

我可以想象,当使用索引集合时,如果您的索引列中有间隙(即它具有类似的值)0, 1, 3, 7)Hibernate 将填充结果List在预期位置有空元素。

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

Hibernate 将 NULL 值粘贴到列表中 的相关文章

随机推荐

  • JavaScript 在 ul 中查找 li 索引

    我正在尝试通过 Javascript 中的 id 查找列表项的索引 例如 我有 5 个项目的列表 给定一个元素 我想找出它在列表中的位置 下面是我希望构建的代码 它使用 onclick 处理程序来查找正在工作的元素 然后我只需要以某种方式找
  • Sequelize targetKey 不起作用

    我正在尝试使用sequelize关联两个模型 Note 和 Resource 但是 targetKey 没有按预期工作 注意模态 module exports function sequelize DataTypes return sequ
  • 解构深层属性

    我最近开始使用 ES6解构赋值语法并开始熟悉这个概念 我想知道是否可以使用相同的语法提取嵌套属性 例如 假设我有以下代码 let cagingIt foo bar Nick Cage 我知道我能够访问摘录foo通过执行以下操作将其放入变量中
  • 使用 API 的 Ionic 3 登录身份验证 - 无法读取 null 的属性“json”

    我正在使用 API 在 Ionic 3 中进行身份验证 但在登录过程中 它显示错误 无法读取 null 的属性 json 这是我的providers gt restapi gt restapi ts import HttpClient fr
  • 客户端发送的请求语法错误 ().+Spring , RESTClient

    我正在使用 JSON 对象使用 Spring MVC 当我尝试从 RESTClient 发送 JSON 对象时 我得到 HTTP 状态 400 客户端发送的请求在语法上不正确 这是我的控制器 ObjectMapper mapper new
  • .net core (csproj) global.json 'projects' 等效项

    使用 net core project json 我曾经通过将源代码的路径添加到 nuget 包和源代码之间进行切换projectsglobal json 中的字段 完成此操作后 它将添加它可以在该路径中找到的所有项目 这些项目可以替换我引
  • 使用 Delaunay 三角剖分进行插值

    有一个形状像某种扭曲抛物面的浊点 我想使用 Delaunay 三角剖分来插值这些点 我尝试过其他技术 例如样条线 但没有设法强制执行所需的行为 我想知道是否有一种快速的方法来使用结果scipy spatial Delaunay我可以给出 x
  • “初始化 Java 工具”期间发生内部错误。在 Eclipse 启动时

    我在启动时遇到这个奇怪的错误 我的环境可能出了什么问题 这是错误 gt ENTRY org eclipse core jobs 4 2 2010 12 30 17 56 32 545 MESSAGE An internal error oc
  • 当出现平局时,熊猫如何决定排序顺序?

    熊猫0 12 0 例如 在下面的 DataFrame 中 为什么它会混淆索引 看一下 4 索引从 1 15 6 7 开始 pandas 用于决定如何排序的推理是什么 我怀疑索引会保持顺序以获得相等的值 mydf pd DataFrame n
  • 修复了 g++ 4.9.1 中奇怪的“%a”格式行为?

    编译器 来自 Nuwen 发行版的 64 位 MinGW G 4 9 1 在 Windows 8 1 下 Code ifdef INCLUDE IOSTREAM include
  • 通过 xmlstarlet 中的文本值选择节点

    我正在尝试提取 Value 节点的值 其中 Key 节点是 bash shell 中的 state
  • 拦截(并可能拒绝)Web 套接字升级请求

    我有一个 Node js 服务器 我正在向其发送 Web 套接字升级请求 此请求的授权标头包含登录信息 我需要将其与数据库条目进行比较 我不确定如何阻止 Web 套接字连接打开 直到执行数据库查询回调之后 以下是我目前正在做的事情的简化 v
  • 如何用Qt QPainter绘制线性渐变圆弧?

    我正在尝试开发自定义QProgressBar如下图所示 我创建了一个扩展 QProgressBar 的类并实现了 PaintEvent void CircularProgressBar paintEvent QPaintEvent int
  • 如何从 Java 调用 Excel 电子表格中的 VBA 代码?

    我有一个包含大量 VBA 代码的 Excel 文件 当在 Excel 中打开文档时 用户可以调用 4 个不带参数的公共子例程 这些子例程根据需要操作各个工作表中的数据 我们有一个大型 Java 应用程序 我们希望通过从 Java 环境调用宏
  • 在 Java 中使用长字符串(heredocs) - 可读的方法? [复制]

    这个问题在这里已经有答案了 我需要在 Java 中处理包含换行符的长字符串 这些是用于 HTML 生成的 但这里并不是最重要的 我知道 Java 的缺陷是它所没有的heredocs 但我还可以使用其他机制 1 字符串级联 或 StringB
  • 有人能给我一个node.js应用程序的例子吗

    我试图了解现有的一些较新的 Web 编程框架 即 Node js Rails 和 Sinatra 之间的差异 有人能给我一个最适合每个框架的应用程序示例吗 也就是说 什么是最适合 Node js 而不是 Rails 或 Sinatra 的应
  • Pandas 可以绘制日期直方图吗?

    我已经将我的系列强制转换为 dtype 的日期时间列datetime64 ns 虽然只需要一天的分辨率 不知道如何改变 import pandas as pd df pd read csv somefile csv column df da
  • UIScrollView 缩放后如何重置?

    我有一个正在绘制的图表UIScrollView 是一大块UIView使用自定义子类CATiledLayer作为它的层 当我放大和缩小时UIScrollView 我希望图表能够动态调整大小 就像我从viewForZoomingInScroll
  • 使用 MPMoviePlayerController 禁用 AirPlay

    我有一个实例MPMoviePlayerController它被用来在 iPhone 应用程序上显示一些实时流媒体视频 这工作正常 但我希望删除所有 AirPlay 功能 可以肯定的是 我专门禁用了 AirPlay 如下所示 if self
  • Hibernate 将 NULL 值粘贴到列表中

    我继承了一些使用 Hibernate 的 Java 代码 一些使用此代码的人现在报告说他们到处都遇到 NullPointerExceptions 我已经能够追踪到这一点 发现当我们执行一个从数据库中提取对象列表的查询时 该查询有一个对象列表