当前位置: 首页 > 面试题库 >

在使用休眠映射的表中添加列,而不会丢失现有数据

莫逸仙
2023-03-14
问题内容

我有一个名为Person的表,我已经在hibernate中映射了该表,我已经有一些不想删除的数据。我需要添加一个称为地址的新列,任何想法如何在hibernate状态下进行?

提前致谢..


问题答案:

可能您不会被迫使用Hibernate创建/更新数据库架构。我假设您的配置中包含以下内容:

<property name="hibernate.hbm2ddl.auto" value="create-drop" />

只需将值更改为“ validate”,对映射进行更改并分别执行ALTER TABLE语句即可。

另一种选择是使用“更新”来让Hibernate弄清楚如何更新表结构。我建议您将其掌握在手中,然后手动执行DDL SQL。



 类似资料:
  • 问题内容: 很抱歉打扰-也许这是一个非常简单的问题- 但由于某些原因,下面的版本无法解析,而带有set的版本可以正常工作。实际上,如果我仅使用set版本并将set替换为list,则会得到: 嵌套异常为org.hibernate.InvalidMappingException:无法从无效映射中解析映射文档 谢谢米莎 问题答案: 你说 而带有set的版本可以正常工作 这是清单DOCTYPE 您可以看到

  • 问题内容: 我有一个用户表和一个具有一对一映射表的表,其中一个字段用于此关系,该字段存储相应用户的ID字段值。 如何为此关系编写hibernate文件? 更新 我的问题是用户的主键是,user_detail的外键是 我在Internet用户user_id中获得的所有示例均作为用户主键,与其他表中的外键相同 问题答案: 对于用户映射…。 用于UserDetail映射。

  • 我使用的是Laravel5.5,我想在一个名为的现有表中添加一个额外的列。 问题是,没有添加额外的列。 1) 因为桌子不是空的,有可能吗? 2)为什么下面的代码块不起作用? 通过运行创建一个文件:

  • 问题内容: 我已将Hibernate配置为使用PostgreSQL序列(通过注释)为主键 id 列生成值,如下所示: 通过这种配置,我看到的是,hibernate时,hibernate已经分配了 id 值> 3000,而对已用序列的查询显示了以下内容: (1列) 问题: 是否有错? hibernate状态应该与序列表同步吗? 如果不是,它将在哪里存储最后生成的ID? 谢谢。 问题答案: 我有同样的

  • 问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th

  • 问题内容: Hibernate提供的注释支持使用或两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum 的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即休眠尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了可读性。有什么