无法使用jpa查询检索结果

mm5n2pyu  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(336)

我正在尝试构建一个springbootsrestapi,从mysql数据库获取数据。这是我在spring boot rest api应用程序的存储库代码中定义的jpa查询方法:

public interface WeekRepository extends CrudRepository<Week, UUID> {
           Iterable<Week> findByOriginId(UUID originId);
}

以下是我要查询的表的详细信息:

CREATE TABLE `week` 
  ( 
     `id`        DOUBLE NOT NULL auto_increment, 
     `due_date`  TIMESTAMP NOT NULL, 
     `origin_id` BINARY(36) DEFAULT NULL, 
     `status`    VARCHAR(36) DEFAULT NULL, 
     PRIMARY KEY (`id`) 
  )

我已经在我的spring boot应用程序中打开了日志记录,因此我可以看到hibernate生成的查询如下所示:

SELECT week0_.id        AS id1_3_, 
       week0_.due_date  AS due_date2_3_, 
       week0_.origin_id AS origin_i3_3_, 
       week0_.status    AS status4_3_ 
FROM   week week0_ 
WHERE  week0_.origin_id = ?;

从日志中我可以看到,我正在通过控制器成功地将json中的参数origin\u id传递给存储库代码。控制台中打印的日志显示参数正绑定到?参数如下:

2021-01-15 00:44:05.916 TRACE 44612 --- [nio-8082-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [VARCHAR] - [49ee49da-8e6e-45f0-a0ea-e63205077870]

但是,此查询没有返回结果。
有人能帮我吗?如果你需要更多的信息请告诉我。谢谢您。

dpiehjr4

dpiehjr41#

请将下面的注解添加到originid属性,以使hibernate添加必要的转换。mysql的uuid道具似乎有些问题

@Column(name = "origin_id")
@Type(type="uuid-char")
private UUID originId;
envsm3lx

envsm3lx2#

您还可以在weekrepository界面中使用@query annotation来获得所需的结果,如下所示:

@Query(value="select * from week0 where week0_.origin_id = ?1",nativeQuery=true )
Iterable<Week> findByOriginId(UUID originId);

在这里,我假设week0是数据库表名,所以请检查它并相应地更改,然后让我知道这是否有效。

uhry853o

uhry853o3#

试试这个:

@Query(value="select * from week where origin_id = :originId", nativeQuery=true)
Iterable<Week> findByOriginId(UUID originId);

相关问题