Spring JPA Hibernate JPQL 查找在 where 子句中传递的项目的索引

Posted

技术标签:

【中文标题】Spring JPA Hibernate JPQL 查找在 where 子句中传递的项目的索引【英文标题】:Spring JPA Hibernate JPQL find index of item that was passed in where clause 【发布时间】:2016-12-31 05:29:24 【问题描述】:

假设我有一个实体

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

     @ElementCollection
     @CollectionTable(name = "my_integers", joinColumns = @JoinColumn(name = "my_integers_id"))
     private List<Integer> listOfIntegers;

     //getters setters


现在我想知道一个整数是否在 DummyEntitys listOfInteger 中,所以在JpaRepository 我写

public interface DummyEntityRepository implements JpaRepository<DummyEntity, Long>

      @Query(value = "SELECT d from DummyEntity where :i MEMBER OF d.listOfIntegers")
      List<DummyEntity> parentsOfI(@Param("i") int i);


到目前为止还可以,但是现在我想在listOfIntegers 中找到i 的索引,我该怎么做?或者我可以这样做吗?

【问题讨论】:

我确信唯一的方法就是以编程方式。此外,是List 而不是Set。如果 List 中有重复的整数会怎样? 很高兴接受它作为答案(除了以编程方式找不到任何其他方式),请将其作为答案发布。 【参考方案1】:

唯一的方法是编程。

此外,是 List 而不是 Set

如果List中有重复的整数会怎样?

【讨论】:

以上是关于Spring JPA Hibernate JPQL 查找在 where 子句中传递的项目的索引的主要内容,如果未能解决你的问题,请参考以下文章

无法在 FROM 子句中使用子查询编写 JPQL 查询 - Spring Data Jpa - Hibernate

Spring JPA Hibernate JPQL 查找在 where 子句中传递的项目的索引

Spring Data JPA + Hibernate 将方法标记为事务

直接加入 JPA 或 HIBERNATE

Spring jpa jpql查询

Spring Boot JPA:为同一参数传递多个值 (JPQL)