【发布时间】: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