【问题标题】:Force Hibernate to ignore "invalid" columns强制休眠忽略“无效”列
【发布时间】:2021-08-06 22:35:11
【问题描述】:

这与我的另一个问题here 有关。我只是在寻找一种方法(注释、系统配置等)让 Hibernate 跳过或忽略模型中的列,这些列与当前的 ResultSet 不对齐。澄清一下——我不是指的是瞬态属性,因为这些属性都是持久的,只是每个查询都不涉及每个属性。

这里是情况的快速总结:

  1. 我无法控制表或查询,一切都是通过存储过程完成的(业务决策,不是我的)。

  2. 由于每个存储过程之间的差异很大,我的想法是将“分支模型”(彼此之间仅相差 1-2 列的模型)合并为几个更大的模型,然后我可以使用这些模型插入或检索数据,同时使用 DTO 进行映射。

  3. 目前唯一的问题是,如果 Hibernate 在当前 ResultSet 中找不到匹配的列,Hibernate 将在模型实体的水合期间抛出 SQLException(很有趣,它似乎并不关心关于另一种方式 - 即,如果实体中几乎没有列,只要一个与当前 ResultSet 匹配)。

任何帮助都将不胜感激,因为我已经尝试解决这个问题一段时间了,我正要回去让每个存储过程都有自己的实体。

【问题讨论】:

  • 设计问题..您要整合的存储过程是否相关,或者最终可能会将整个数据库存储过程抽象为一个业务模型?
  • @osamayaccoub 存储过程是相关的,模型本身大多相同,模型之间的差异主要是另一个表上的连接显示为附加列。

标签: java hibernate spring-data-jpa


【解决方案1】:

这不太可能,我也不建议这样做,因为这可能会隐藏映射错误。如果您无法说服数据库团队至少添加具有常量值的合成列,以便您可以重复使用相同的映射,那么您很不幸,您将不得不继续使用多个映射。

【讨论】:

  • 感谢克里斯蒂安的回答。我认为这很可能是这种情况,但我想也许我在某个地方错过了一个明显的解决方案。干杯!
猜你喜欢
  • 2011-12-11
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多