【问题标题】:Springboot GET API returned deleted value from oracle sql database tableSpring Boot GET API 从 oracle sql 数据库表中返回删除值
【发布时间】:2022-10-13 07:00:01
【问题描述】:

我编写了一个 springboot GET API,它从 SQL 数据库表中获取所有行。一开始效果很好。但是,在我从数据库表中删除了几行之后,再次运行 GET API,它会返回表中的所有行以及我刚刚删除的行。

看起来删除事务处理不正确。我在 SQL developer 中检查了表,并验证了行已被删除。只是不确定为什么 GET API 仍然返回这些已删除的行。

这是由未在 Spring Boot 应用程序中提交的 sql 开发人员的删除事务引起的吗?如果是这种情况,我如何在 Spring Boot 中跟踪事务处理? . 我的道层:

import java.util.List;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;
import lombok.extern.slf4j.Slf4j;

import app.entity.Restriction;

@Slf4j
@Repository
public class RestrictionDaoImpl implements RestrictionDao {

    private final NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    private static final String GET_ALL_RESTRICTIONS = " SELECT * FROM RPO_RESTRICTION_CRITERIA ";
    private static final RestrictionRowMapper RESTRICTION_ROW_MAPPER = new RestrictionRowMapper();

    public RestrictionDaoImpl(@Qualifier("aeVaultNamedParameterJdbcTemplate") 
        NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
    }

 @Override
    public List<Restriction> getAllRestrictions() {
        List<Restriction> restrictions = this.namedParameterJdbcTemplate.query(GET_ALL_RESTRICTIONS, RESTRICTION_ROW_MAPPER);
        return restrictions;
    }
}

我检查了我的 dao 层,在我的查询和 namedParameterJdbcTemplate 中找不到任何错误。我需要检查其他文件/代码吗?

【问题讨论】:

  • 您是否使用任何缓存解决方案?
  • 您在数据库中运行删除查询后提交了吗?

标签: java sql spring-boot spring-jdbc spring-transactions


【解决方案1】:

尝试重启IDE或者添加这两个spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true 在你的 application.properties

【讨论】:

  • 该问题可能与 DML 相关,与 spring.jpa.hibernate.ddl-auto 混淆不会有太大作用。更重要的是,将其设置为 none 以外的其他值可能会在生产中产生严重后果。尽管spring.jpa.show-sql 可以在调查过程中提供帮助,但它肯定与问题无关。
  • 我认为删除事务在 Springboot 中没有正确处理。反正有没有让springboot app与delete事务同步?
  • @Attila 是因为删除事务在 Spring Boot 应用程序中回滚了吗?或者在springboot应用程序中没有提交sql developer中的删除事务?
猜你喜欢
  • 2017-06-09
  • 2015-12-19
  • 2020-03-29
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
相关资源
最近更新 更多