【发布时间】:2021-10-25 16:18:56
【问题描述】:
我有这个实体:
@Data
@Entity
public class MyEntity {
@Id Long id;
@ManyToMany List<Foo> foos;
@ManyToMany List<Bar> bars;
}
我需要防止重叠,所以如果任何foos 包含一个带有id 1 的foo 和一个带有id 2 的bar,则不能有另一个MyEntity 包含相同的foos 和bars 组合。
所以我做了这个存储库:
public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
List<MyEntity> findAllByFoosInAndBarsIn(List<MyEntity> foo, List<MyEntity> bar);
}
只要两个列表都包含某些内容,它就可以正常工作。但如果由于某种原因其中一个为空,则结果集也是。
【问题讨论】:
-
您是否尝试通过
null代替?或者是...FoosInOrBarsIn?And基本上意味着foos in {...} and bars in {...}并且由于x in {}永远不可能为真,如果 either 参数列表为真,则任何实体都不会匹配。 -
查看生成的SQL语句
标签: java spring spring-boot spring-data-jpa spring-data