有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

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

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