springdata jpa在收藏中找到

时间:2017-07-18 06:29:20

标签: spring-data-jpa

这里有一个存储库,我想找到一个集合中menu_id的实体,我觉得我的函数名称没问题

@Repository
public interface MenuEntityRepository extends JpaRepository<MenuEntity,Long>{
    ArrayList<MenuEntity> findByMenuIdIn(List<Long> menuId);
}

但我总是得到错误:

java.lang.IllegalArgumentException: Parameter value element [1] did not match expected type [java.lang.Long (n/a)]
  

menu_id是@Entity菜单

     

as long menu_id

     

但在mysql类型中是bigint(20)

     

所以我把menu_id作为BigInteger列表,所以我收到了错误

2 个答案:

答案 0 :(得分:0)

好看,ArrayList<MenuEntity>应该更改为List<MenuEntity>,因为它不在集合类中,arraylist在抽象集合类中,您需要首先尝试。如果可能有帮助

以下是我的回答

我认为您的findMyMenuIdIn(List<Long> menuId)不受支持您需要使用您的服务模块进行自己的查询,您无法在存储库中执行此操作findByMenuId (Long menuId)并使服务模块重复执行这个查询。

答案 1 :(得分:0)

您的方法名称findByMenuIdIn(List<Long> menuid)确实正确且受支持。我用它,它适合我。但是,您得到的错误与传递给您调用它的方法的参数有关。 java.lang.IllegalArgumentException: Parameter value element [1] did not match expected type [java.lang.Long (n/a)]表示您的集合中的第二项可能不是Long类型。检查并确保集合中的所有元素(方法的参数)都是Long类型。您可能希望发布调用方法的代码段,包括如何在此处创建集合。我希望这有帮助!