【问题标题】:Spring boot + Postgres + JPA + Heroku not persisting data and not loggingSpring boot + Postgres + JPA + Heroku 不持久化数据且不记录
【发布时间】:2017-10-15 21:17:54
【问题描述】:

我在 Heroku 上部署了一个非常简单的 Spring Boot 应用程序。应用程序本身在控制器方面运行良好 - API 返回一些简单的 JSON,没什么特别的。

我向 Heroku 添加了一个 Postgres 数据库,在应用程序启动时,我看到 Spring 按预期创建了表。它只有一张表,有一个超级简单的映射类:

@Entity
public class Score implements Serializable {
private static final long serialVersionUID = -2899157432342241888L;

private String customer;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private Date date = new Date();

private int score;

//setters and getters

存储库只是一个没有显式实现的接口:

@Repository
public interface ScoreRepository extends CrudRepository<Score, Long>

我在 @Service 带注释的类中调用 repository.save(...),该类具有自动连接的存储库。我认为这工作正常,因为我没有看到任何错误 - 但我没有看到任何记录被保留到数据库!不知道这里可能出了什么问题;我想我可能错误地设置了 Heroku,或者我在 Heroku 中的 Postgres 设置中遗漏了一些明显的东西?

次要问题

也许相关,但日志记录似乎也不太好用。根据 Heroku 文档,我可以打印到标准输出,它应该出现在日志中,但这不会发生。此外,我在属性文件中有这个:

spring.jpa.show-sql=true

但我在 heroku 日志中没有看到这样的 SQL 查询记录。

非常感谢任何帮助!提前致谢。

【问题讨论】:

    标签: java spring postgresql heroku


    【解决方案1】:

    日志记录问题:当您启动应用程序时,您是否在控制台中看到任何错误(甚至在 spring 徽标之前的前几行),说明多个版本的日志记录 jar (slf4j.jar),如果是这样,您可能看不到日志。如果这是真的,那么检查你的 maven 依赖并排除所有不必要的 slf4j.jar

    并通过调试启动您的 Spring 应用程序。

    java -jar myapp.jar --debug
    

    持久性问题:确保在事务中运行它(在 Spring 上下文中)

    在你解决了你的日志记录问题之后,我相信你可以解决这个问题,但是你可以调试你的代码并查看请求是否到达你的保存方法,然后你可以进入以查找是否有任何问题,但我肯定会查看日志以查找错误(如果有)。

    【讨论】:

      【解决方案2】:

      我没有看到二传手。你有吗,因为我看到的只是评论 // 获取器和设置器

      【讨论】:

      • 是的,他们在那里,我在这里省略了它们,因此评论
      猜你喜欢
      • 1970-01-01
      • 2020-07-09
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      相关资源
      最近更新 更多