千家信息网

如何解决Spring Data Jpa 实体类自动创建数据库表失败的问题

发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,这篇文章主要讲解了"如何解决Spring Data Jpa 实体类自动创建数据库表失败的问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何解决Sp
千家信息网最后更新 2024年12月04日如何解决Spring Data Jpa 实体类自动创建数据库表失败的问题

这篇文章主要讲解了"如何解决Spring Data Jpa 实体类自动创建数据库表失败的问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何解决Spring Data Jpa 实体类自动创建数据库表失败的问题"吧!

目录
  • Spring Data Jpa 实体类自动创建数据库表失败

    • 找了半天发现是一个配置的问题

  • 可能导致JPA 无法自动建表的问题汇总

    • 1、没加@Entity或引错Entity所在包

    • 2、jpa配置中ddl-auto未设置update

    • 3、实体类的包不是启动程序所在包的子包

    • 4、mysql配置问题

    • 5、依赖不全

    • 6、实体类间关系错误

    • 7、启动类注解问题


Spring Data Jpa 实体类自动创建数据库表失败

先说一下我遇到的这个问题,首先我是通过maven创建了一个spring boot的工程,引入了Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表。

找了半天发现是一个配置的问题

hibernate.ddl-auto节点的配置,这个配置有两种方式去配置,我使用的是通过properties文件去配置:

#DataSource Configspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:6033/data_service?characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=root spring.jpa.show-sql= truespring.jpa.hibernate.ddl-auto=updatespring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5Dialectspring.jackson.serialization.indent_output=false

hibernate.hbm2ddl.auto节点的值有几个create、create-drop、update、validate、none

  • create:每次加载hibernate会自动创建表,以后启动会覆盖之前的表,所以这个值基本不用,严重会导致的数据的丢失。

  • create-drop : 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除,下一次启动会重新创建。

  • update:加载hibernate时根据实体类model创建数据库表,这是表名的依据是@Entity注解的值或者@Table注解的值,sessionFactory关闭表不会删除,且下一次启动会根据实体model更新结构或者有新的实体类会创建新的表。

  • validate:启动时验证表的结构,不会创建表

  • none:启动时不做任何操作

可能导致JPA 无法自动建表的问题汇总

开发某个个人项目时使用JPA自动建表功能,运行项目后无法自动建表,也没报错,网上的各种方法都试了,折腾了一晚上也没发现问题。今早才发现了是自己的一个sb错误。索性归纳一下可能导致JPA 无法自动建表的问题(mysql)。

1、没加@Entity或引错Entity所在包

目标实体类前需加@Entity注解

所需Entity位于javax.persistence包下

2、jpa配置中ddl-auto未设置update

若ddl-auto为none,则程序无法对db进行修改,需设置update或create。

若设update,则程序会对db中已有表进行修改或未有表的创建;若设create,则会对db中的表进行drop-create操作,慎设

注意yml中不要写错层级,jpa直接位于spring下

3、实体类的包不是启动程序所在包的子包

项目启动时,框架会自动扫描启动类所在包的所有子包。因此,实体类包应为启动类所在包的子包,如:

否则,需在启动类前加EntityScan注解,标明需扫描的实体包

4、mysql配置问题

mysql6以上需导入com.mysql.cj.jdbc.Driver驱动,url后需补充一些参数

5、依赖不全

需引入:

等依赖

6、实体类间关系错误

实体间对应关系弄错,或mapby的属性与对应实体属性名不一致(本人就是这个问题),都会导致不建表,且项目启动时不报错,运行时可能报错

7、启动类注解问题

感谢各位的阅读,以上就是"如何解决Spring Data Jpa 实体类自动创建数据库表失败的问题"的内容了,经过本文的学习后,相信大家对如何解决Spring Data Jpa 实体类自动创建数据库表失败的问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

实体 问题 数据 配置 数据库 所在 注解 程序 项目 启动会 错误 学习 运行 内容 就是 属性 工程 结构 节点 验证 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网算科技的一部分吗 网易我的世界服务器怎么弄区块 网络技术的趋势图 中广的网络技术有限公司 网络安全审判办法什么时候实施 服务器管理口和普通网口ip ccia中国网络安全是什么 linux如何加固服务器 客户端接收不到服务器的信息 软件开发费用财务处理 阿里数据库开源代码 传奇账号角色数据库 编程软件开发商 软件开发品牌好 福建正规软件开发服务有哪些 芝罘区安卓软件开发哪家好 山东路客互联网科技有限公司 xampp数据库密码 建材共享店铺系统软件开发 公司内网网页和数据库交换 如何检查服务器安全云锁 软件开发都能开发什么软件 互联网科技刷脸技术 加密服务器怎么找回 数据库表外键语句 搜索软件网络安全的设计依据 农业银行网络安全宣传周 长宁区网络软件开发代理品牌 电脑数据库管理软件最新免费版 h3c服务器hdm口不亮了
0