我对这一切都很缺乏经验,我对此感到很困惑。我在做一个愚蠢的餐厅午餐菜单旁的项目。我想在我的raspberry pi上运行一个小型java spring服务器。
我在我的windows机器和raspberry pi上运行OpenJDK-11和Postgres-11。
下面的自定义查询在windows上工作,但在我的pi上不起作用。
public interface RestaurantMenuRepository extends JpaRepository<RestaurantWeek, Long> {
List<RestaurantWeek> findByWeekNumber(int weekNumber);
}知道为什么吗?
我也尝试过
@Query(value = "SELECT * FROM Week w WHERE w.week_number = :weekNumber", nativeQuery = true)
RestaurantWeek findWeekByWeekIdentifierParamNative(@Param("weekNumber") Integer weekNumber);和
Optional<RestaurantWeek> week = this.restaurantMenuRepository.findById(id);它们都在我的windows pc上工作,但在pi上工作。所以好像发生了什么奇怪的事情。没有错误被抛出。
WeekNumber是一列。在Windows上,它返回给定的周数匹配的周列表,但是在pi上,列表总是空的,即使应该有匹配。
我还使用了来自JpaRepository的其他方法,如.findAll()和.save(),它们在这两种方法上都工作得很好,数据被保存,并且它返回数据库中当前的所有内容都很好。只是我的自定义查询在raspberry pi上不起作用。
提前谢谢。
发布于 2021-09-09 14:11:03
好吧,我自己解决了。问题是当我使用Calendar类查找当前一周时。出于某种原因,即使我运行相同的代码
public static int GetCurrentWeek(){
return Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
}在多个地方,一次检查当前周是否存在于数据库中,一次在生成周号时保存到数据库中,第三次用于获取当前周。当保存到数据库时,它给了我正确的周号。当从数据库查询时,它给了我当前的周号+ 1,这只发生在raspberry pi上,而不是在windows上。通过添加大量日志来查看每个变量,我发现了这个问题,并注意到它在查询错误的周号,这显然不存在于数据库中,因为它用正确的编号保存了星期。
我转而使用java.Time
public static int GetCurrentWeek(){
return LocalDate.now().get(WeekFields.ISO.weekOfWeekBasedYear());
}返回每个场景中正确的和相同的周号。
所以我猜TL:不要使用java.util.Calendar,使用java.time,并确保您的代码生成的变量是正确的。
https://stackoverflow.com/questions/69093846
复制相似问题