Java 按名称或类型获取Rest API e.x搜索的方法?(Spring)

Java 按名称或类型获取Rest API e.x搜索的方法?(Spring),java,sql,spring,rest,get,Java,Sql,Spring,Rest,Get,我正在尝试为一个艺术家项目构建一个RESTAPI。 因此,该项目有两个表: 艺术家-id、姓名、流派 类型id,名称 “艺术家”类具有以下对象: @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "fk_genre_id") private Genres genres; 问题是我必须使用get方法按名称或流派搜索艺术家。 这就是我试图做的: @存储库 公共界面Artist

我正在尝试为一个艺术家项目构建一个RESTAPI。 因此,该项目有两个表:

艺术家-id、姓名、流派

类型id,名称

“艺术家”类具有以下对象:

  @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
  @JoinColumn(name = "fk_genre_id")
  private Genres genres;
问题是我必须使用get方法按名称或流派搜索艺术家。 这就是我试图做的:

@存储库 公共界面ArtistRepository扩展了JpaRepository{

@Query( "Select a FROM Artists a INNER JOIN Genres g on a.genres.getid()=g.getid() where a.name = searchkey or g.name=searchkey")
Artists getArtistbynameorgenre(@Param("name") String searchkey);
}


我对SQL语法没有很好的了解,我认为问题在于查询语法。

正如您猜测的那样,问题在于您的
SQL
查询。 将查询更改为:

@Query( "Select a FROM Artists a INNER JOIN a.genres g on a.genre = g.genre-id where a.name = ?1 or g.name=?1")
Artists getArtistbynameorgenre(String searchkey);

我希望它能工作:)

相反,您可以简单地使用spring数据获得如下数据

@Repository public interface ArtistRepository extends JpaRepository{

    List<Artist> artists = findAllByIdOrGenre_Name(String searchkey, String searchkey);

}
@Repository公共接口ArtistRepository扩展了JpaRepository{
列表艺术家=FindAllByDorGene_名称(字符串搜索键,字符串搜索键);
}

嗨!我试过了,出现了一个新错误…应该是join!的路径!。关于这方面的任何知识?@JetaKasabaqi检查新的查询,我忘了将
genres
称为
a.genres
。您也可以使用@ekanshratogi提到的方法