开发者社区> 问答> 正文

如何在Spring Data JDBC的CrudRepository中的Query中引用实体?

要使用findWithTitle()方法从具有spring data crudrepository的数据库中获取实体,请执行以下操作: interface TasksCrudRepository extends CrudRepository<Task, Long> {

@Query(value = "SELECT t FROM Task t WHERE t.title IS NOT NULL")
List<Task> findWithTitle();

} 但是,我得到: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "T" not found; SQL statement: SELECT t FROM Task t [42122-199] 我找不到原因。据我所知,这个语法应该按预期工作。 Task entity如下: @Data @Table("task") @AllArgsConstructor public class Task { @Id private Long id; private String title; private String description; private Set attachments; private Set tagRefs; @CreatedDate private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt; } 这是它的模式: CREATE TABLE task ( id IDENTITY, title VARCHAR(100), description VARCHAR(1024), created_at TIMESTAMP, updated_at TIMESTAMP, );

展开
收起
小六码奴 2019-10-21 19:19:04 9579 0
1 条回答
写回答
取消 提交回答
  • 请使用预定义的Spring JPA方法。 请尝试以下方法。

    interface TasksCrudRepository extends CrudRepository<Task, Long> {

    List<Task> findByTitleNotNull();
    

    } 修改完成: 删除查询注释 重命名方法以匹配JPA标准预定义服务

    2019-10-21 19:19:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载