开发者社区 问答 正文

如何在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 9618 分享 版权
1 条回答
写回答
取消 提交回答
  • 请使用预定义的Spring JPA方法。 请尝试以下方法。

    interface TasksCrudRepository extends CrudRepository<Task, Long> {

    List<Task> findByTitleNotNull();
    

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

    2019-10-21 19:19:35
    赞同 展开评论