gpt4 book ai didi

Spring 启动应用程序 : jpa query returning old data

转载 作者:行者123 更新时间:2023-12-04 03:20:00 24 4
gpt4 key购买 nike

我们已经使用 1.3.5 版本创建了一个 spring boot 项目。我们的应用程序与 Mysql 数据库交互。
我们创建了一组 jpa-repositories,我们在其中使用 findAll、findOne 和其他自定义查询方法。

我们正面临一个随机发生的问题。以下是重现它的步骤:

  • 使用 spring-boot 应用程序在 db 上触发读取查询。
  • 现在使用上面读取查询返回的记录的 mysql-console 手动更改 Mysql 中的数据。
  • 再次使用应用程序触发相同的读取查询。

  • 第3步之后,我们应该已经收到了第2步的修改结果,但是我们得到的是修改前的数据。

    现在,如果我们再次使用应用程序触发读取查询,它会为我们提供正确的值。

    此问题随机发生。我们没有在我们的应用程序中使用任何类型的缓存。

    在调试时我发现 jpa-repository 代码实际上是在调用 mysql 并且它也获取最新的结果,但是当这个调用返回到我们的应用程序服务时,令人惊讶的是返回值具有旧数据。

    请帮助我们确定可能的原因。

    JPA/数据源配置:
  • spring.datasource.driverClassName=com.mysql.jdbc.Driver
  • spring.datasource.url=jdbc:mysql://localhost:3306/dbname?autoReconnect=true
  • spring.datasource.username=root
  • spring.datasource.password=xxx
  • spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
  • spring.datasource.max-wait=15000
  • spring.datasource.max-active=100
  • spring.datasource.max-idle=20
  • spring.datasource.test-on-borrow=true
  • spring.datasource.remove-abandoned=true
  • spring.datasource.remove-abandoned-timeout=300
  • spring.datasource.default-auto-commit=false
  • spring.datasource.validation-query=SELECT 1
  • spring.datasource.validation-interval=30000
  • hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
  • hibernate.show_sql=false
  • hibernate.hbm2ddl.auto=更新

  • 服务方式:
         @Override
    @Transactional
    public List<Event> getAllEvent() {
    return eventRepository.findAll();
    }

    JPARepository:
    public interface EventRepository extends JpaRepository<Event, Long> {
    List<Event> findAll();
    }

    最佳答案

    @Cacheable(false)

    例子:
    @Entity
    @Table(name="table_name")
    @Cacheable(false)
    public class EntityName {
    // ...
    }

    关于 Spring 启动应用程序 : jpa query returning old data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923264/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com