当前位置: 首页 > 知识库问答 >
问题:

我们可以在使用@RepositoryRestResource时使用 Spring Data REST 创建自定义查询吗?

龙骏
2023-03-14

我是spring boot的新手,我试图使用Spring-boot JPA创建一个简单的REST服务。首先,我使用了简单的< code>@Repository,它工作得很好,我可以为我的类中定义的属性编写自定义查询方法。但是当我使用< code > @ RepositoryRestResource 时,我无法创建自定义查询方法。对主键和其他操作的基本发现正在发生,但我不能创建任何自定义查询。

package com.example.demo.Model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Book {

    @Id
    @GeneratedValue
    int id;
    int isbn;
    String name;
    String author;
    double price;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getIsbn() {
        return isbn;
    }
    public void setIsbn(int isbn) {
        this.isbn = isbn;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }

}

这是存储库

package com.example.demo.repo;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.stereotype.Repository;

import com.example.demo.Model.Book;

@RepositoryRestResource(collectionResourceRel = "books", path = "books")
public interface BookRepo extends JpaRepository<Book, Integer> {

    //I want this query to work same as it does for primary Key id.
    public Book findByName(@Param("name") String name);

    //Same for this
    public Book findByIsbn(@Param("isbn") String isbn);    

}

由于我没有映射任何url用于按名称搜索,我试图像这样搜索localhost:8080/books/?name=java是否正确?对于上面的url,它只是表现得像localhost:8080/books并忽略后续部分并提供所有书籍的详细信息。我只想有两个类并执行所有基本的Rest操作并创建自定义查询。

提前感谢。

共有1个答案

郁权
2023-03-14

您需要在yout uri中添加therm“search”和方法名称,如下所示:

localhost:8080/books/search/findByName?名称=java

 类似资料:
  • 我正在使用JPA QueryDSL从DB查询数据,这很管用。现在,我有一个用JPA QueryDSL编写的复杂的select查询,我需要使用它创建一个临时表,如下所示(POSTGRES)。 有没有人可以帮助使用JPA QueryDSL定义上面的查询。有可能用JPA查询处理DDL吗? 您对我的问题提出的建议将不胜感激。

  • 问题内容: 我正在使用Spring Data JPA进行项目。我在数据库中有一个表作为my_query。 我想创建一个将字符串作为参数的方法,然后将其作为数据库中的查询执行。 方法: 例如,当我通过 那么它应该在数据库级别运行该查询。 存储库类如下。 但是,它没有按我预期的那样工作。它给出以下错误。 还有什么其他方法可以实现这个目标。提前致谢 问题答案: 您可以参数化的唯一部分是在子句中使用的值。

  • 我有一个整数参数。我需要编写一个定制的Spring JPA查询,其中等效的SQL是<(1,2)中的code>和x.propertyStatuid。 我在SpringDataJPA文档中看到关键字是“in”,如

  • 是否可以使用AWS提供的Java SDK创建AWS CloudWatch自定义度量? 《开发人员指南》讨论了通过命令行工具发布自定义度量。 这在Java SDK中是可能的吗?如果是,请提供链接或教程。

  • 本文向大家介绍我们可以在MySQL查询中使用SELECT NULL语句吗?,包括了我们可以在MySQL查询中使用SELECT NULL语句吗?的使用技巧和注意事项,需要的朋友参考一下 是的,我们可以在MySQL查询中使用SELECT NULL语句。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是实现SELECT NULL

  • 我正在用Spring Data JPA做一个项目。我在数据库中有一个表为my_query。 我想创建一个以字符串作为参数的方法,然后将其作为数据库中的查询执行。