【发布时间】:2021-03-13 13:18:32
【问题描述】:
我有一个很奇怪的问题。我有一个带有 JpaRepository 和 hibernate 的 Spring Boot 应用程序来处理持久的简单 Java 对象。这些只有一些字符串属性。没有关系,没有特殊的子类,非常非常简单。我正在使用 Spring Boot 2.3.7.Release。我使用 H2-Database 和 PostegreSQL 测试了这种效果。以前做过数百次。
在我在 Windows 10 上运行的开发笔记本上,一切正常 - 我可以保存实体,删除它们。但是当我尝试在我的 linux 服务器 (centOS) 上部署应用程序时,删除和插入语句根本不会执行。
例如,如果我调用 save 函数,我希望首先是一个 select 语句(检查条目是否已经存在),然后是 insert(因为它不是在我的情况下)。这正是我在笔记本上看到的。在服务器上,我看到执行了初始选择语句,但没有执行以下插入。它甚至没有尝试过。
deleteAll() 也是如此 - 我看到了 select 语句,但缺少以下 delete 语句。而且我没有收到任何错误消息。没有什么。 Hibernate 只是省略了删除和插入语句。
我可以使用我的应用程序中使用的同一用户手动将数据插入数据库,并且程序甚至会提取保存的数据 - 我可以检索它们并显示它们。所以与数据库的连接有效,映射有效,就好像 hibernate 处于某种只读模式,省略了所有删除和插入语句。
对此有任何想法吗?我已经检查了所有可用的配置(除了一些只提供密码的环境变量之外,它们都是相同的)。
我只是想不出去哪里找。提前非常感谢!
【问题讨论】:
-
调试时间...
-
我做了一个完整的调试 - 它看起来完全相似,只是 linus 服务器上缺少插入和删除语句
标签: java hibernate spring-data-jpa