Java 按名称或类型获取Rest API e.x搜索的方法?(Spring)
我正在尝试为一个艺术家项目构建一个RESTAPI。 因此,该项目有两个表: 艺术家-id、姓名、流派 类型id,名称 “艺术家”类具有以下对象: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
@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提到的方法