使用 EntityManager 消除缓存
通过 em.clear();,在每次查询前清除 JPA 缓存,可解决后续查询直接返回第一次查询数据的问题
自定义 Repository 接口类
public interface FinancialTrendRepository {
List<MonthlyTrendEntity> selectAssetLiquidTrend();
List<MonthlyTrendEntity> selectAssetFixedTrend();
}
自定义 Repository 实现类
@Repository
public class FinancialTrendRepositoryImpl implements FinancialTrendRepository {
@PersistenceContext
private EntityManager em;
@Override
public List<MonthlyTrendEntity> selectAssetLiquidTrend() {
String sql = "select id, year, month, value from ..."; // 这里省略具体的查询逻辑
Query query = em.createNativeQuery(sql, MonthlyTrendEntity.class); // 创建自定义查询,并将查询结果映射到 MonthlyTrendEntity
em.clear(); // 清除缓存
query.unwrap(NativeQueryImpl.class);
return query.getResultList();
}
@Override
public List<MonthlyTrendEntity> selectAssetFixedTrend() {
String sql = "select id, year, month, value from ..."; // 这里省略具体的查询逻辑
Query query = em.createNativeQuery(sql, MonthlyTrendEntity.class); // 创建自定义查询,并将查询结果映射到 MonthlyTrendEntity
em.clear(); // 清除缓存
query.unwrap(NativeQueryImpl.class);
return query.getResultList();
}
}