如何在Hibernate中创建临时表?
-
17-09-2020 - |
题
目标
- 在不使用本机SQL的情况下在Hibernate中调用
CREATE TEMPORARY TABLE
语句。这意味着使用HQL或Hibernate API。 - 将对象保存到临时表。
- 调用使用现有表和临时表的存储过程。
-
DROP
完成后临时表。 (我知道这不是必要的,但我认为这是一个很好的习惯。) - 我非常熟悉sql,但新的休眠。
- 我被迫在一个项目中使用Hibernate,因为你知道,某人的决定。
- 我要将一个web表单保存到Oracle数据库。
- Web表单包含一个充满文本字段的表(由其他人设计),每个单元格中的表格。
- 当用户单击
Save
时,必须在单个事务中保存的值。 - Web表单由数据库视图备份。
- 数据库视图是从使用EAV模式的数据库表创建的。 (它是这样做的,因为列是一种动态的。)
- Web表单中的每个文本字段都是在数据库表中的一行建模的。
- 显示Web表单在视图上使用
SELECT
语句。
更新Web表单在视图上使用 - 只更改更改的值。每个更新都有一个审计跟踪。
- 如果在没有用户注意事项的情况下由其他用户更新任何值,则会回滚事务。以下是这种场景的示例:生成acticeTagcode当用户显示Web表单生成的字段时是生成的,另一个用户将相同的字段更新为生成的字段,第一用户将字段更新为生成的字段并提交Web表单。
最初提出的解决方案
- 使用ajax(jQuery)检测文本字段中的更改,并仅提交用户更改的更改。 然而,需要在数据库中检测到另一个用户所做的更改。
- 当用户单击
(I)
时,创建一个临时表(临时表是仅由当前会话/连接看到的表,并且在会话关闭/断开连接时自动删除)将对象(单元格)保存到临时表中。 - 开始交易。
- 锁定一些现有表(或仅相关行,以进行性能)。
- 将提交的数据与现有数据进行比较。
- 如果进行了任何不受伤的变化,回滚交易。
- 更新必要的行。
- 提交事务并解锁表。
- 删除临时表。
背景
UPDATE
语句,调用视图的INSTEAD OF
触发器。
解决方案应该更好地工作
有什么想法吗?
解决方案
这没有回答您的确切要求,但鉴于答案没有尝试......您是否考虑使用临时CSV表使用 http://csvjdbc.sourceforge.net/
不隶属于 StackOverflow