带有QueryDSL的JPA选择查询错误的结果

时间:2017-11-15 13:16:45

标签: java spring jpa querydsl

在对数据库中的表进行选择时遇到问题,由此产生的数据不正确。可以有某种Spring缓存来更新吗?

@Service
public class CronogramaService {

    @Autowired
    private CronogramaRepository cronogramaRepository;

    @Autowired
    private EntityManager entityManager;

    public List<Cronograma> findAll() {
        QCronograma cronograma = QCronograma.cronograma;
        return new JPAQuery(entityManager)
            .from(cronograma)
            .list(cronograma);
    }
}

测试主要

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("spring_config.xml");

    CronogramaService cronoService = context.getBean(CronogramaService.class);

    List<Cronograma> crono = cronoService.findAll();

    for (Cronograma cronograma : crono) {
        System.out.println(cronograma.getDia());
        System.out.println(cronograma.getIdCronograma());
    }

    System.out.println();

    ((ClassPathXmlApplicationContext)context).close();
}

该应用程序有2018年的365天。但是id 1的结果将在2017-12-31返回给我。在数据库中,id 1的数据是01-01-2018,我不明白这是什么问题。

1 个答案:

答案 0 :(得分:0)

我们遇到了类似的问题,归结为应用服务器和数据库服务器之间的不同时区。假设您正在使用MySQL,请尝试使用serverTimezone参数设置连接到您的数据库,如jdbc:mysql:// server:3306 / database?serverTimezone = Europe / London