首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java自定义查询在windows中工作,但在raspberry pi (debian?)

Java自定义查询在windows中工作,但在raspberry pi (debian?)
EN

Stack Overflow用户
提问于 2021-09-07 19:49:04
回答 1查看 41关注 0票数 0

我对这一切都很缺乏经验,我对此感到很困惑。我在做一个愚蠢的餐厅午餐菜单旁的项目。我想在我的raspberry pi上运行一个小型java spring服务器。

我在我的windows机器和raspberry pi上运行OpenJDK-11和Postgres-11。

下面的自定义查询在windows上工作,但在我的pi上不起作用。

代码语言:javascript
复制
public interface RestaurantMenuRepository extends JpaRepository<RestaurantWeek, Long> {
    List<RestaurantWeek> findByWeekNumber(int weekNumber);
}

知道为什么吗?

我也尝试过

代码语言:javascript
复制
@Query(value = "SELECT * FROM Week w WHERE w.week_number = :weekNumber", nativeQuery = true)
RestaurantWeek findWeekByWeekIdentifierParamNative(@Param("weekNumber") Integer weekNumber);

代码语言:javascript
复制
Optional<RestaurantWeek> week = this.restaurantMenuRepository.findById(id);

它们都在我的windows pc上工作,但在pi上工作。所以好像发生了什么奇怪的事情。没有错误被抛出。

WeekNumber是一列。在Windows上,它返回给定的周数匹配的周列表,但是在pi上,列表总是空的,即使应该有匹配。

我还使用了来自JpaRepository的其他方法,如.findAll().save(),它们在这两种方法上都工作得很好,数据被保存,并且它返回数据库中当前的所有内容都很好。只是我的自定义查询在raspberry pi上不起作用。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-09 14:11:03

好吧,我自己解决了。问题是当我使用Calendar类查找当前一周时。出于某种原因,即使我运行相同的代码

代码语言:javascript
复制
public static int GetCurrentWeek(){
    return Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
}

在多个地方,一次检查当前周是否存在于数据库中,一次在生成周号时保存到数据库中,第三次用于获取当前周。当保存到数据库时,它给了我正确的周号。当从数据库查询时,它给了我当前的周号+ 1,这只发生在raspberry pi上,而不是在windows上。通过添加大量日志来查看每个变量,我发现了这个问题,并注意到它在查询错误的周号,这显然不存在于数据库中,因为它用正确的编号保存了星期。

我转而使用java.Time

代码语言:javascript
复制
public static int GetCurrentWeek(){
    return LocalDate.now().get(WeekFields.ISO.weekOfWeekBasedYear());
}

返回每个场景中正确的和相同的周号。

所以我猜TL:不要使用java.util.Calendar,使用java.time,并确保您的代码生成的变量是正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69093846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档