有没有一种方法可以覆盖Spring Data Rest执行的findAll查询?
我需要一种根据特定标准过滤结果的方法,似乎使用 @NamedQuery
就是我要找的,因此我设置了一个测试。
@Entity
@Table(name = "users")
@NamedQueries({
@NamedQuery(name = "User.findAll", query="SELECT u FROM User u WHERE u.username = 'test'"),
@NamedQuery(name = "User.findNameEqualsTest", query="SELECT u FROM User u WHERE u.username = 'test'")
})
public class User implements Serializable, Identifiable<Long> { }
有了这个设置,我期望SDR会使用我的findAll()查询(返回1个结果),但实际上它执行了相同的findAll逻辑(返回所有结果)。
在我的Repository中,我添加了:
@Repository
@RestResource(path = "users", rel = "users")
public interface UserJpaRepository extends JpaRepository<User, Long> {
public Page<User> findNameEqualsTest(Pageable pageable);
}
在这种情况下,它确实会使用提供的
@NamedQuery
。那么...我应该如何覆盖默认的
findAll()
逻辑?我需要构建一个复杂的条件集并将其应用于结果集。