Java 如何让Hibernate忽略实体中不存在的表列?

Java 如何让Hibernate忽略实体中不存在的表列?,java,spring,entity-framework,hibernate,hibernate-mapping,Java,Spring,Entity Framework,Hibernate,Hibernate Mapping,我将Java与SpringMVC和Hibernate一起使用。我有很多实体,一切都很好。但是,如果我在数据库的某个列中添加了一个列,我的服务将开始崩溃,直到我用新列更新相关的java实体类为止 有没有办法告诉Hibernate忽略它无法识别的数据库列?如果希望实体中有一个字段不在DB表中,可以在该字段上使用@Transient。我想要相反的结果 如果这是不可能的,那么当需要进行数据库更新时,如何部署Hibernate服务 Hibernate不会在向Hibernate管理的表中添加新列后“崩溃”。

我将Java与SpringMVC和Hibernate一起使用。我有很多实体,一切都很好。但是,如果我在数据库的某个列中添加了一个列,我的服务将开始崩溃,直到我用新列更新相关的java实体类为止

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

如果这是不可能的,那么当需要进行数据库更新时,如何部署Hibernate服务

Hibernate不会在向Hibernate管理的表中添加新列后“崩溃”。Hibernate方案验证仅限于验证映射列是否可以存储在数据库中,而不会在数据库中查找未映射的列

导致问题的可能原因是新的非空字段。添加这样的字段将使Hibernate无法将任何内容持久化到该表中,因为它不知道该字段的存在,并且在插入时不会提供该字段。解决这个问题的办法是:

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