我正试图在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 Data的存储库生成中,这似乎是不可能的。但是,您可以做的是为关联的另一端建立一个存储库并以这种方式使用它:
http://localhost:8080/offices/1/visits
我知道这已经晚了几年,但如果有人再次以这种方式徘徊,我会留在这里。 (感谢kakashi hatake指出我忽略的错误)。
将findBy方法更改为:
@RestResource(rel="byOffice", path="byOffice")
List<Visit> findByOffice_Id(@Param("officeId") long officeId);
并更改匹配的请求:
http://localhost:8080/visits/search/byOffice?officeId=1