我在使用@PostFilter
注释过滤嵌套/内联集合时遇到问题。我的数据模型是这样的:
+--------+ 1 * +----------+ 1 * +---------------+
| Course |------>| Exercise |------>| Participation |
+--------+ +----------+ +===============+
| user: String |
+---------------+
我基本上只希望在JSON响应中仅包含那些参与者,其中用户等于当前经过身份验证的用户。
我已覆盖扩展findAll
的存储库界面中的CrudRepository
方法,并添加了@PostFilter
注释:
@RepositoryRestResource(exported = false)
public interface ParticipationRepository extends CrudRepository<Participation, Long> {
@Override
@PostFilter("filterObject.user == principal.username")
Iterable<Participation> findAll();
@Override
@PostFilter("filterObject.user == principal.username")
Iterable<Participation> findAll(Iterable<Long> longs);
}
我还尝试在练习课中参与的getter方法中添加注释。
启用Spring Security调试后,我可以看到永远不会应用PostFilter表达式。我想这可能是因为Spring Data Rest没有使用我注释的方法之一来获取参与。
是否有人遇到类似问题并找到解决方案?提前谢谢!