无法从 Hibernate 项目将行插入 H2 数据库
Posted
技术标签:
【中文标题】无法从 Hibernate 项目将行插入 H2 数据库【英文标题】:Unable to insert rows into H2 database from Hibernate project 【发布时间】:2014-09-11 09:39:13 【问题描述】:我正在 IntelliJ IDE 中创建一个 Hibernate 项目并尝试将它与 H2 数据库挂钩。我根据本教程创建了项目:
http://www.roseindia.net/hibernate/hibernate4.2/hibernate-example-step-by-step-in-eclipse.shtml
我正在做的唯一更改是数据库,而不是 mysql,我使用的是 H2。但是,当我尝试运行应用程序时,显示插入数据库已成功,但是当我在 H2 控制台中打开数据库时,没有任何此类行的迹象。我在这里和其他地方尝试了许多建议的解决方案,包括this、this 和this。我尝试将 hibernate.cfg.xml 文件中数据库的连接 URL 从相对路径更改为绝对路径,但无济于事。我附上了我的 hibernate.cfg.xml 的屏幕截图和下面日志的相关部分。请帮我解决这个问题。
【问题讨论】:
【参考方案1】:您的 hibernate.connection.url
应该类似于 jdbc:h2:tcp://localhost/mem:playground
我假设您正在从项目中启动 H2 数据库,因为您正在通过控制台连接到 H2。
【讨论】:
我在某处读到,使用“mem”会导致 H2 加载“内存中”,据我了解,这会使数据库一旦超出范围就会丢失所有表信息,这就是为什么我没有不要使用那种语法。我的假设是否正确? 如果你不使用mem
那么你如何连接到H2控制台。
我只是使用数据库下载附带的 H2 命令行批处理文件。我没有从我的程序连接到控制台。我在那里使用的 URL 是 jdbc:h2:~/test
那么你有两个选择。使用 mem
使用连接 url jdbc:h2:tcp://localhost/mem:playground 连接 H2 命令行。使用连接 url 作为 jdbc:h2:~/test 然后关闭您的应用程序打开具有相同连接 url 的 H2 命令行并查看结果。在这种模式下,您不能同时运行 H2 命令行和您的应用程序。
感谢 dursun,为我指明了正确的道路。不,我不需要使用 mem。但是,您指出连接 URL 应指向远程数据库位置是正确的。所以我最终使用了 jdbc:h2:tcp://localhost/~/test 并且运行顺利。再次非常感谢。干杯..以上是关于无法从 Hibernate 项目将行插入 H2 数据库的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2.5.0、Spring Cloud 2020.0.2 和 Hibernate 5.4.31 - H2 数据库多行插入失败
尝试将行插入表因为带有sequelize.js的UUID外键时出错