gpt4 book ai didi

java - 为什么 Hibernate 要求列表索引可以为空?

转载 作者:行者123 更新时间:2023-11-30 10:35:22 29 4
gpt4 key购买 nike

我有一个类似于下面的映射,似乎 index 列在 DB INSERT 语句期间未填充,因为 DB 提示 indexNULL。但是,如果我使 index 列可为空,它会按预期工作。

<list name="someList">
<key column="someFk"/>
<list-index column="index"/>
<one-to-many class="SomeClass"/>
</list>

有没有办法强制 Hibernate 在插入时填充 index?我确定一定有办法,但我查看了文档但找不到任何东西。

最佳答案

这个行为可以通过 Hibernate flush 操作顺序的棱镜来解释。如果你看一下 ActionQueue类,您会看到实体状态转换按以下顺序执行:

  1. 孤儿移除行动
  2. 抽象实体插入操作
  3. 实体更新操作
  4. QueuedOperationCollectionAction
  5. CollectionRemoveAction
  6. 集合更新操作
  7. CollectionRecreateAction
  8. 实体删除操作

现在,SQL INSERT 语句由 AbstractEntityInsertAction 执行,而索引由 CollectionRecreateAction 通过 UPDATE 语句分配。

虽然我同意删除 UPDATE 语句并在 INSERT 上填充列表索引会更有效,但我认为此更改将需要大量的重构工作。您可以为此打开一个 JIRA 问题,并将其标记为改进。

关于java - 为什么 Hibernate 要求列表索引可以为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41194606/

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