【发布时间】:2015-05-12 04:35:19
【问题描述】:
我有一个依赖于插入顺序的表(我无法更改的不良遗留设计)并且以错误的顺序插入了临时实体。有问题的表称为“平均值”,它是“信念”的子实体。当session.save(belief); 被调用时,动作被级联到作为列表存储在信念类中的子平均实体。 Mean 实体以适当的顺序存储在 confidence.getMeans() 列表中,但是一旦持久化到数据库中,它们就会按其复合键的顺序插入。例如,如果要插入 3 个均值实体,其顺序和组合键如下:
[1, 1], [1, 3], [1, 2]
它们将按复合键的顺序插入,如下所示:
[1, 1], [1, 2], [1, 3]
知道是什么原因造成的吗?我认为 Hibernate 应该根据它们在列表中出现的顺序插入? 我什至尝试在每个 Mean 实体上单独运行 session.save() 以查看这是否会产生影响,但它没有。
感谢您的帮助!
编辑:所以我最终做的是在 Mean 表中添加一个名为 col_index 的新列,该列在结果矩阵中保存 Mean 的列索引。我将 javax.persistence.OrderBy 注释与新的 col_index 列一起使用,因此平均实体列表以适当的顺序返回。虽然,这仍然不能解决插入顺序问题,我仍然希望对此有答案。但是,就目前而言,这个解决方案就足够了。
【问题讨论】:
-
我可以知道插入顺序如何可靠/对表格有影响吗?
-
平均实体的插入顺序也决定了结果矩阵中均值的列索引。因此,如果两个实体打开插入(如示例中),那么这些列会切换。
-
请参考this 这可能会有所帮助 - 不是答案,问题指定他在每次插入后使用保存而不是交易来保留订单