使用@PostFilter过滤嵌套/内联集合

时间:2016-05-24 12:46:06

标签: java spring spring-security spring-data-rest

我在使用@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没有使用我注释的方法之一来获取参与。

是否有人遇到类似问题并找到解决方案?提前谢谢!

0 个答案:

没有答案