Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 默认的Spring数据查询,其中包含;id";在列表中(JpaRepository)_Java_Spring_Spring Data Jpa_Spring Data_Nativequery - Fatal编程技术网

Java 默认的Spring数据查询,其中包含;id";在列表中(JpaRepository)

Java 默认的Spring数据查询,其中包含;id";在列表中(JpaRepository),java,spring,spring-data-jpa,spring-data,nativequery,Java,Spring,Spring Data Jpa,Spring Data,Nativequery,我有如下简单实体: Suggestion.java: @Entity public class Suggestion { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @OneToOne private Employee author; @OneToMany @JoinColumn(name = "recipients_id")

我有如下简单实体:

Suggestion.java:

@Entity
public class Suggestion {

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

    @OneToOne
    private Employee author;

    @OneToMany
    @JoinColumn(name = "recipients_id")
    private List<Employee> recipients;
}
我想在控制器中返回所有
建议
,这些建议在
收件人
列表中只包含一个员工的
id

是否可以避免自定义查询(本机查询)

我试过:

findByRecipientsContains(id)或

findByRecipientsContaining(id)

但是没有运气


编辑:

当我在存储库中使用时:

可选findByRecipientsIn(长id)

也不带
可选
且在控制器中:

    @GetMapping("/employees/{id}/suggestions")
    @ResponseStatus(HttpStatus.OK)
    public List<Suggestion> getSuggestionsByRecipient(@PathVariable("id") Long id) {
        return suggestionRepository.findByRecipientsIn(id).get();
    }
@GetMapping(“/employees/{id}/suggestions”)
@ResponseStatus(HttpStatus.OK)
公共列表getSuggestionsByRecipient(@PathVariable(“id”)长id){
返回suggestionRepository.findByRecipientsIn(id).get();
}
我得到的例外情况如下:


参数值元素[1]与预期类型[com.herokuapp.erpmesbackend.erpmesbackend.employees.employees(n/a)]不匹配;嵌套异常为java.lang.IllegalArgumentException:参数值元素[1]与预期类型[com.herokuapp.erpmesbackend.erpmesbackend.employees.employees(n/a)]不匹配,根本原因应为

findByRecipientsId(Long id)

与此测试用例相比:

,它应该可以简单地使用

findByRecipientsId(Long id)

与此测试用例相比:

通过整个员工,而不仅仅是id。查看文档后。。。我认为
contains
是一个字符串操作,而
In
IsIn
是一个集合操作。也许
findSuggestionByEmployeeInRecipients(Employee e)
@mavriksc谢谢,我没有描述我的整个体系结构,但我使用id请求,所以我被迫实现“id”,我几乎可以肯定你能做到这一点:findByRecipientsIn(List idsList)。我现在没有个人电脑,但我记得我以前也做过类似的事情。你只有一个id,但收件人属性是一个列表,因此我认为正确的做法是调用存储库的服务创建一个包含单个元素的列表。因此,当将来有更多ID时,可以重用该函数。除非你使用@Query注释,否则我不认为你可以这样做。传递整个员工,而不仅仅是id。查看文档后。。。我认为
contains
是一个字符串操作,而
In
IsIn
是一个集合操作。也许
findSuggestionByEmployeeInRecipients(Employee e)
@mavriksc谢谢,我没有描述我的整个体系结构,但我使用id请求,所以我被迫实现“id”,我几乎可以肯定你能做到这一点:findByRecipientsIn(List idsList)。我现在没有个人电脑,但我记得我以前也做过类似的事情。你只有一个id,但收件人属性是一个列表,因此我认为正确的做法是调用存储库的服务创建一个包含单个元素的列表。因此,当将来有更多ID时,可以重用该函数。除非使用@Query注释,否则我不认为您可以这样做。