gpt4 book ai didi

java - JPA Spring 存储库日期过滤返回空数组

转载 作者:行者123 更新时间:2023-11-30 08:03:04 25 4
gpt4 key购买 nike

在两个日期之间调用查询会返回一个空数组,但事实并非如此。

我正在使用这个“简单”的 spring 存储库:

import java.time.LocalDate;
import java.util.List;
import org.springframework.data.repository.CrudRepository;
import com.company.app.domain.DailySales;

public interface DailySalesRepo extends CrudRepository<DailySales, Long> {

public List<DailySales> findByDateBetween(LocalDate start, LocalDate end);
}

然后我在我的服务中调用该方法:

public class ImplSalesService implements SaleService {

private static final long serialVersionUID = 1L;
protected final Log logger = LogFactory.getLog(getClass());

@Autowired
private DailySalesRepo dailySalesRepo;

public List<DailySales> getDailySales(LocalDate start, LocalDate end) {
logger.debug("getDailySales with params start/end: " + start.toString() + "/" + end.toString());
List<DailySales> result = dailySalesRepo.findByDateBetween(start, end);
return result;
}
}

我知道 hibernate 正在获取权限参数,因为我可以在日志中看到:

Hibernate: select dailysales0_.id as id1_0_, dailysales0_.amount as amount2_0_, dailysales0_.currency as currency3_0_, dailysales0_.date as date4_0_, dailysales0_.tenantId as tenantId5_0_ from agg_dailysells dailysales0_ where dailysales0_.date between ? and ?
10:16:03,674 TRACE BasicBinder:83 - binding parameter [1] as [VARBINARY] - 2016-02-01
10:16:03,682 TRACE BasicBinder:83 - binding parameter [2] as [VARBINARY] - 2016-05-12

将该跟踪复制到 SQL 控制台会返回 101 项:

select dailysales0_.id as id1_0_, dailysales0_.amount as amount2_0_, dailysales0_.currency as currency3_0_, dailysales0_.date as date4_0_, dailysales0_.tenantId as tenantId5_0_ from agg_dailysells dailysales0_ where dailysales0_.date between "2016-02-01" and "2016-05-12";

结果:返回 101 行

但是List<DailySales> result得到一个空列表。

我做错了什么?

我的实体看起来像:

@Entity
@Table(name="agg_dailysells")
public class DailySales implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private Integer tenantId;
private LocalDate date;
private Double amount;
private Integer currency;

... getters and setters go here ...

最佳答案

据我所知,Hibernate 4 不支持 Java 8 Time API。您应该使用 java.util.Date 而不是任何 Java 8 Time 抽象,或者升级到 Hibernate 5 并将 hibernate-java8 模块添加到您的依赖项中。有关 Java LocalDate 和 Hibernate 4 的更多信息,请参阅 question .

关于java - JPA Spring 存储库日期过滤返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36470821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com