gpt4 book ai didi

java - Hibernate 数据映射到 MariaDB 总是返回 null

转载 作者:行者123 更新时间:2023-12-01 19:25:16 25 4
gpt4 key购买 nike

在名为 PlayerPoints@Entity 类中,我有一个 java.sql.Date 字段映射到 MariaDB 具有日期类型列的数据库字段。当我使用查询方法通过 JpaRepository 查询数据库时,它总是返回 null

这是我迄今为止尝试过的:

调用数据库:

PlayerPoints playerPointsFound = playerPointsRepository.findByDatePlayed(matchDay.getDate())

Optional<PlayerPoints> findByDatePlayed(Date matchDay); // Does not work

@Query(value = "SELECT * FROM player_points pp WHERE pp.date_played = ?1", nativeQuery = true)
Optional<PlayerPoints> myOwnFindByDatePlayed(Date matchDay); // Does not work

@Query(value = "SELECT * FROM player_points pp WHERE pp.date_played = '2020-06-12'", nativeQuery = true)
Optional<PlayerPoints> myOwnFindByFixedDatePlayed(); //WORKS!

在实体类中我尝试添加@Type(type="date")但它没有改变任何东西。我看到它绑定(bind)为 Date 即使没有 @Type 注释,这似乎是正确的:

o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [DATE] - [2020-06-12]

我的数据库已满:

*************************** 1. row ***************************
id: 165
date_played: 2020-06-12
player_points: 100

此外,我还检查了列类型:

+-----------+
| DATA_TYPE |
+-----------+
| int |
| date |
| int |
+-----------+

我的表已使用以下命令创建:

CREATE TABLE player_points (
id INT AUTO_INCREMENT PRIMARY KEY,
date_played DATE NOT NULL,
player_points INT NOT NULL,
);

有人知道为什么这个查询总是返回null吗?

更新!

我查看了 mariadb 的日志文件,发现当对查询中的日期进行硬编码时,结果是:

SELECT * FROM player_points pp WHERE pp.date_played = '2020-06-12'

但是,使用 hibernate 的映射我得到以下查询(不是日期):

select playerpoin0_.id as id1_1_, playerpoin0_.date_played as date_pla2_1_, playerpoin0_.player_points as player_poi_pl3_1_, from player_points playerpoin0_ where playerpoin0_.date_played='2020-06-11'

所以它与应用程序和mariadb服务器的时区有关。我还没能解决这个问题,但它离解决方案又近了一步。

问候,

巴特

最佳答案

就像@Thomas 所建议的那样,它与时区有关。

mariaDB 在 docker 容器上运行,并遵循其 @SYSTEM 时区 -> 表示 docker 容器的时区。这被设置为 UTC,但我的本地计算机在 ETC 时区运行。

因此,我将 -e TZ=Europe/Amsterdam 添加到我的 docker run 命令中,将 docker 容器的时区设置为 ETC。现在我看到正确的日期被记录到我的 mariaDB 的常规日志中。

谢谢大家!

关于java - Hibernate 数据映射到 MariaDB 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59318181/

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