【发布时间】:2020-07-13 02:20:54
【问题描述】:
我在对数据库中的记录进行排序时遇到问题。
有 10 个匹配项具有 LocalDate 和 LocalTime 变量,并且它们没有按(最初)LocalDate 和 LocalTime 排序。这是我从数据库中得到的:
2020-04-04 13:00:00
2020-04-04 15:00:00
2020-04-04 16:00:00
2020-04-04 19:00:00
2020-04-04 20:00:00
2020-04-04 16:00:00
2020-04-04 22:00:00
2020-04-04 18:00:00
2020-04-04 23:00:00
2020-04-04 23:30:00
但应该是:
2020-04-04 13:00:00
2020-04-04 15:00:00
2020-04-04 16:00:00
2020-04-04 16:00:00
2020-04-04 18:00:00
2020-04-04 19:00:00
2020-04-04 20:00:00
2020-04-04 22:00:00
2020-04-04 23:00:00
2020-04-04 23:30:00
我的匹配实体(由于mysql问题,类被称为Game):
@Data
@Entity
public class Game {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne
private Team teamBlue;
@OneToOne
private Team teamRed;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate localDate;
@DateTimeFormat(pattern = "HH:mm")
private LocalTime localTime;
}
JpaRepository:
@Repository
public interface GameRepository extends JpaRepository<Game, Long> {
@Query("SELECT g FROM Game g ORDER BY g.localDate, g.localTime ASC")
List<Game> findUpcomingMatches();
}
另外,我不认为 LocalDate 和 LocalTime 变量的列应该是这样的。
起初我以为我的 SQL Query 可能有问题,但经过一些研究后,我得出的结论是它可能没问题。 如果有人可以帮助我,我将不胜感激。
【问题讨论】:
-
为查询生成的 SQL 是什么样子的?
-
列的生成数据类型是什么?
-
SQL 查询(在 JpaRepository 中):
@Query("SELECT g FROM Game g ORDER BY g.localDate, g.localTime ASC") -
列的数据类型:
local_date: DATETIME(6),local_time: DATETIME(6) -
没有 Hibernate 生成查询表单。你可以在application.properties中设置logging.level.org.hibernate.SQL=debug然后就可以看到了
标签: java mysql spring datetime spring-data-jpa