HibernateJpaVendorAdapter 的generateDdl 不会更改表

2024-01-06

我正在使用 Spring+JPA+Hibernate 开发一个网站。在持久性配置(JPA + Hibernate)中,我将 HibernateJpaVendorAdapter 的generateDdl属性设置为true,实际上新实体在数据库中正确创建新表。

但是,一旦创建了表,如果我向实体添加属性,我期望 HibernateJpaVendorAdapter 更改表并添加列。这种情况没有发生,很奇怪,因为在Java AbstractJpaVendorAdapter的setGenerateDdl方法文档中有:“设置EntityManagerFactory初始化后是否生成DDL,创建/updating所有相关表格。”

JPA+Hibernate配置:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${db.driverClassName}" />
    <property name="url" value="${db.url}" />
    <property name="username" value="${db.username}" />
    <property name="password" value="${db.password}" />
</bean>

<bean id="jpaAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
    <property name="showSql" value="${db.showSql}" />
    <property name="generateDdl" value="${db.generateDdl}" />
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter" ref="jpaAdapter" />
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
        </props>
    </property>
    <property name="dataSource" ref="dataSource" />
</bean>

持久性.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence
        xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
   http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
        version="1.0">

    <persistence-unit name="m8tsPU" />
</persistence>

难道我做错了什么?


您可以通过直接设置适当的 Hibernate 特定属性来对 DDL 生成进行更细粒度的控制:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
     ...
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            ...
        </props>
    </property>
</bean>

或者,您可以使用create-drop代替update, since update在某些情况下可能会导致问题。但请注意,自动 DDL 更新不适用于生产用途。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HibernateJpaVendorAdapter 的generateDdl 不会更改表 的相关文章

随机推荐

  • 如何在Linux中查询Vsync相位

    我需要创建一个 C 函数 它将返回下一个 Vsync 间隔之前的秒数作为浮点值 Why 我正在创建显示跟随鼠标光标的矩形的程序 表面上OpenGL在glXSwapBuffers函数中提供了垂直同步机制 但我发现这是不可靠的 使用某些卡驱动程
  • Masonry 不适用于动态内容

    Masonry 无法处理我的动态内容 我不知道为什么 我不认为这是我这边的错误 至少我已经查看了代码几个小时了 我找不到任何不起作用的东西 reads listbox php and cycles through the array cal
  • 在 GCP 上部署 Weaviate k8s 设置时,无法在 API 组中列出资源“configmaps”

    运行时 在 GCP 上 helm upgrade values values yaml install namespace weaviate weaviate weaviate tgz 它返回 UPGRADE FAILED Error co
  • 键入时向数字添加逗号

    我试图在用户输入数字时添加逗号 选择的正确语法是什么input form control带属性的类number输入Jquery 编辑 我无法更改 HTML 代码 因为它是使用 Bootstrap 从 Django 输出的 HTML span
  • 为什么宇宙飞船运算符里面只有一个等号?

    为何宇宙飞船操作员 lt gt 选择有一个等号而不是两个 这是否被视为与一个等号 通常表示赋值 和两个等号 通常表示比较 不一致 为什么会有两个 里面只有一个 lt gt and 这一点也不矛盾 仅有的 不一致 这是为了避免与赋值运算符发生
  • 如何编写惯用的构造函数

    我对 Go 中的构造函数感到困惑 我见过的大多数构造函数都会返回一个结构体 但 Effective Go 表明在某些情况下可以返回一个接口 根据 普遍性 规则 https golang org doc effective go html g
  • 标志“-D_POSIX_C_SOURCE=200112L”是什么意思?

    没有它 我无法使用连接到互联网所需的库 但我不知道这意味着什么 D POSIX C SOURCE 200112L 谁能解释一下吗 随着时间的推移 POSIX 经历了多次修订 每个新版本都更改了它支持的功能集 该宏定义了您希望使用哪组功能来构
  • 哪里需要(不需要)完整的类型?

    我最近惊讶地发现这段代码可以编译 至少在 gcc 和 MSVC 上 template
  • JavaScript中reduceRight的原生实现是错误的

    对于关联运算f在数组的元素上a 以下关系应该成立 a reduce f 应该等于a reduceRight f 事实上 它确实适用于结合运算和交换运算 为了 例子 const a 0 1 2 3 4 5 6 7 8 9 const add
  • 临时表在 PHPMyAdmin 中不起作用

    我运行这个查询 CREATE TEMPORARY TABLE usercount SELECT FROM users 我收到这条消息 Your SQL query has been executed successfully Query t
  • AttributeError:“Request”对象没有属性“get”

    当我向服务器发出 POST 请求时 我收到 500 错误并带有注释 AttributeError Request object has no attribute get 这是我的服务器 app route api entries metho
  • 将 URL 参数从 Azure ACS 传递到我的自定义身份提供程序?

    我们正在开发一个自定义身份提供商 STS 来验证我们的应用程序 在此项目中 我们使用 Azure 访问控制服务 2 0 我们的身份提供程序是 wsfederation 因此 在启动项目时 azure ACS 有一个名为 wctx 的 url
  • 如何在 Apache 中使用 mod_rewrite 对特殊字符进行编码?

    我希望为我的标记系统提供漂亮的 URL 以及所有特殊字符 and 有没有办法用 mod rewrite 来做到这一点 而不必对链接进行双重编码 我注意到 delicious com 和 stackoverflow 似乎能够处理单编码的特殊字
  • 如何将字典列表转换为数据框?

    这是我要转换为数据框的字典列表 我尝试使用多索引但无法转换整个数据帧 response name xyz empId 007 details address street x street city x city street xx str
  • knockoutjs如何获取选中的选项arrayObject

    我想获取选定的选项对象
  • 如何禁用特定资产的构建警告?

    当我在 Unity IDE 中构建 进入播放模式时 控制台窗口中出现许多警告 这些警告是由第 3 方资源的脚本编译生成的 如何在不更改特定资产的情况下禁用或隐藏这些资产的控制台警告 我预计人们会正义地抱怨我需要如何解决这些警告 而不是把它们
  • 奖励广告回调未触发

    我有一款游戏 当玩家失去生命时 我希望他们能够再次观看视频 我正在使用 unity 版本 2018 1 1f1 人 并且我已经下载了 admob unity 插件版本 3 13 1 因此 如果玩家同意观看广告 广告就会播放 然后继续游戏 而
  • Mongoose:函数“once”

    在 Mongoose 的 入门 中 http mongoosejs com docs index html http mongoosejs com docs index html 有一个使用该函数的示例once db once open f
  • 如何将“from Queue import Queue, Empty”从 Python 2 转换为 Python 3? [复制]

    这个问题在这里已经有答案了 我正在将用 Python 2 编写的源代码转换为 Python 3 我偶然发现了这一点 from Queue import Queue Empty 我把它改为 from multiprocessing impor
  • HibernateJpaVendorAdapter 的generateDdl 不会更改表

    我正在使用 Spring JPA Hibernate 开发一个网站 在持久性配置 JPA Hibernate 中 我将 HibernateJpaVendorAdapter 的generateDdl属性设置为true 实际上新实体在数据库中正