gpt4 book ai didi

java - 如何让 Hibernate 忽略不在实体中的表列?

转载 作者:行者123 更新时间:2023-11-29 03:05:26 26 4
gpt4 key购买 nike

我将 Java 与 Spring MVC 和 Hibernate 结合使用。我有一堆实体,一切正常。但是,如果我将一列添加到我的数据库列之一,我的服务将开始崩溃,直到我也使用新列更新相关的 java 实体类。

有没有办法告诉 Hibernate 忽略它不认识的数据库列?如果你想在你的实体中有一个不在你的数据库表中的字段,你可以在该字段上使用@Transient。我想要相反的。

如果这不可能,那么当数据库更新必须随之进行时,如何部署 Hibernate 服务?

最佳答案

在将新列添加到由 Hibernate 管理的表中后,Hibernate 不会“崩溃”。 Hibernate 方案验证仅验证映射的列可以存储在数据库中,但不会在数据库中查找未映射的列。

可能导致您出现问题的是新的 NOT-null 字段。添加这样一个字段将使 Hibernate 无法将任何内容保存到该表中,因为它不知道该字段的存在并且不会在插入时提供它。这个问题的解决方案是:

  • 为不使用该字段的客户提供 alter table 操作中的 DEFAULT
  • 不将字段标记为非空并在另一层执行可空性检查
  • 使用预插入触发器填充空字段
  • 或者,您甚至可以先添加新字段,部署新版本的应用程序,然后将新字段标记为非空。

关于java - 如何让 Hibernate 忽略不在实体中的表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419636/

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