java - Spring 数据 : findByMyListIsEmpty() throws a compilation error

标签 java spring spring-data-jpa

我正在寻找一种查询方法,该方法返回具有空 List 属性的对象列表。

我已经尝试过

List<MyEntity> findByMyListIsEmpty();
List<MyEntity> findByMyListEmpty();

我收到编译错误

Invalid derived query! No property isEmpty found for type MyList! Traversed path: MyEntity.myList.

我也尝试过

List<MyEntity> findByMyListIsNull();

它不会导致编译错误,但它给了我错误的结果,因为 myList 不为空(空列表)

这是我的实体类的代码

class MyEntity implements Serializable {
// some fields
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "MY_ENTITY_LIST", joinColumns = @JoinColumn(name = "MY_ENTITY_ID"), inverseJoinColumns = @JoinColumn(name = "MY_LIST_ID"))
private List<MyList> myList;
// constuctors & getters & setters
}

MyEntityRepository:

public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
List<MyEntity> findByMyListEmpty(); //My problem is here
}

最佳答案

首先,在使用 Spring Data JPA findBy 查询进行查询时,没有可以使用的 IsEmpty/Empty 关键字。因此,您会收到编译错误,因为它不受支持。请参阅此链接了解 spring- https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ 支持的关键字- 表 3. spring 提供的方法名称中支持的关键字。

IsNull 用于检查 Null 值。由于您的情况列表为空,我建议尝试使用 findByMyListIn(List list) 方法并传递空列表作为参数。我还没有实际检查过这个解决方案,但根据 spring 文档,它应该可以工作。

除此之外,还要检查实体之间的关系,因为您使用了 @JoinTable 注释,但您的帖子中没有提及关联实体/连接表。

作为替代方法,如果内置方法未给出正确的结果,您始终可以编写自己的自定义查询。

希望这有帮助。

关于java - Spring 数据 : findByMyListIsEmpty() throws a compilation error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57223190/

相关文章:

java - 为什么根证书不受 Java 客户端信任,即使它已经在 cacerts keystore 中

java - 使用 Hibernate JPA 启动 Spring Boot 应用程序时出现 NoSuchMethodError

java - 格式化 java 字符串以查看特定方式

java - spring 中的单例作用域 bean,我如何使其成为非线程安全

java - 如何检查 th :utext in thymeleaf page 的值

java - 创建名称为 'entityManagerFactory' 的 bean 时出错

mysql - 如何使用 Spring boot 从 select 查询中获取结果

java - 如何从 QueryDSL 检索列表/结果

java - 如何使用 Spring Data Rest 和 PagingAndSortingRepository 处理异常?

java - 在启动时删除 gluon-mobile 对话框