简而言之
我需要找到显示在 spring data rest 中的错误消息的根本原因。如何通过查看一般错误消息找到我应该放置 @JsonIgnore
或 @RestResource(exported = false)
的确切位置?
详细说明
我用 spring data rest
嵌入了我的 Spring 应用程序。尽管有很多实体和存储库,但我只希望通过 rest 公开很少的实体。其中一个实体是 user
。
但我收到以下错误消息。 我怎样才能深入到我能真正找到这个一般错误消息的根本原因的地方?
Could not write content: Infinite recursion (StackOverflowError) (through reference chain: org.springframework.hateoas.Resources["_embedded"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: org.springframework.hateoas.Resources["_embedded"])
存储库
@RepositoryRestResource(collectionResourceRel = "system-users", itemResourceRel = "system-user", path = "system-users")
public interface UserRepository extends CrudRepository<User, Long>, DatatablesCriteriasRepository<User>{
@RestResource(exported = false)
@Query("SELECT u FROM User u INNER JOIN u.roles role WHERE role.role in :roles")
Iterable<User> findByRoles(@Param("roles") String... roles);
@RestResource(exported = false)
@Query("SELECT u FROM User u WHERE u.username = :username")
User findByUsername(@Param("username") String username);
...
...
}
型号
@Entity
@Table(name = "system_user_tab")
public class User{
...
...
我知道通过使用 @JsonIgnore
, @RestResource(exported = false)
我可以尝试消除这个问题。但是我需要通过查看此错误消息来了解如何理解我必须使用这些注释的确切位置。
最佳答案
您可以在较新版本的 Spring Data Rest 2.4.0.RELEASE
中执行此操作:
Could not write content: Infinite recursion (StackOverflowError) (through reference chain: org.springframework.hateoas.PagedResources[\"_embedded\"]->java.util.UnmodifiableMap[\"payment\"]->java.util.ArrayList[0]->org.springframework.data.rest.webmvc.json.ProjectionResource[\"content\"]->$Proxy153[\"subject\"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: org.springframework.hateoas.PagedResources[\"_embedded\"]->java.util.UnmodifiableMap[\"payment\"]->java.util.ArrayList[0]->org.springframework.data.rest.webmvc.json.ProjectionResource[\"content\"]->$Proxy153[\
它将是字段 subject
。
关于java - Spring Data Rest not working——寻找无限递归错误的根源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30682797/