Spring数据休息和JPA,通过关联查询

问题描述 投票:2回答:2

我正试图在JPA中使用“findBy”语句。我的实体类是:

@Entity
public class Visit {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@ManyToOne
private Specialist specialist;

@ManyToOne
private Treatment treatment;

@ManyToOne
private Office office;
.
.
.

这是存储库:

public interface VisitRepository extends CrudRepository<Visit, Long>            {

@RestResource(rel="byOffice", path="byOffice")
List<Visit> findByOffice(@Param("office") Office office);

}

我正试图找到所有访问办公室ID的东西,所以我正在提出请求:http://localhost:8080/visits/search/byOffice?office=1

但回应是:

status": 500,
"error": "Internal Server Error",
"exception":      "org.springframework.data.repository.support.QueryMethodParameterConversionException",
"message": "Failed to convert 1 into core.domain.Office!",
"path": "/visits/search/byOffice"

我该怎么做才能让它发挥作用?这是好方法吗?谢谢你的回答!

spring hibernate jpa single-page-application
2个回答
0
投票

苦苦挣扎为此寻找方法。在Spring Data的存储库生成中,这似乎是不可能的。但是,您可以做的是为关联的另一端建立一个存储库并以这种方式使用它:

http://localhost:8080/offices/1/visits

0
投票

我知道这已经晚了几年,但如果有人再次以这种方式徘徊,我会留在这里。 (感谢kakashi hatake指出我忽略的错误)。

将findBy方法更改为:

@RestResource(rel="byOffice", path="byOffice")
List<Visit> findByOffice_Id(@Param("officeId") long officeId);

并更改匹配的请求:

http://localhost:8080/visits/search/byOffice?officeId=1

© www.soinside.com 2019 - 2024. All rights reserved.