如何在Elasticsearch中存储Hateoas结构

问题描述

我有以下问题,我需要使用Springboot应用程序中的save方法在Elasticsearch中保存一个Hateos结构,但是我收到错误消息“ stackoverflowerror null”:请问有什么机构可以检查我的代码以查看我的位置犯错误 ?我花了很长时间来演示这个例子。

Config.java

@Configuration
@EnableElasticsearchRepositories(basePackages = "com.example.demo.elsticsearch")
public class Config {

    @Bean
    public RestHighLevelClient client() {
        ClientConfiguration clientConfiguration
                = ClientConfiguration.builder()
                .connectedTo("localhost:9200")
                .build();

        return RestClients.create(clientConfiguration).rest();
    }

    @Bean
    public ElasticsearchOperations elasticsearchTemplate() {
        return new ElasticsearchRestTemplate(client());
    }
}

UserResourceAssembler.java

@Service
public class UserResourseAssembler extends RepresentationModelAssemblerSupport<User,UserResourse> {

    public UserResourseAssembler() {
        super(JsController.class,UserResourse.class);
    }

    @Override
    public UserResourse toModel(User user) {
        UserResourse resource = UserResourse.builder().email("jjj").firstName("hii").lastName("hoo").loginId("123").build();

        resource.add(linkTo(methodOn(JsController.class).getByLoginId(user.getLoginId())).withRel("self"));
        return resource;
    }
}

Repo.java

@Repository
public interface Repo extends ElasticsearchRepository<UserResourse,String> {
    List<UserResourse> findByLoginId(String loginId);
}

User.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String loginId;
    private String firstName;
    private String lastName;
    private String email;
}

UserResourse.java

@Mapping(mappingPath = "/files.json")
@Document(indexName = "files",type = "file")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserResourse extends RepresentationModel<UserResourse> {
    @Id
    private String loginId;
    private String firstName;
    private String lastName;
    private String email;
}

JsController.java

@RestController
@RequestMapping("/user")
@AllArgsConstructor
public class JsController {
    private final Repo repository;
    private final UserResourseAssembler userResourseAssembler;

    @GetMapping("/check")
    public ResponseEntity<UserResourse> uploadData() {
        User user = new User(UUID.randomUUID().toString(),"hi","hello","jj");
        UserResourse userResourse = userResourseAssembler.toModel(user);
        repository.save(userResourse);
        return new ResponseEntity<>(userResourse,HttpStatus.OK);
    }

    @GetMapping("/jobId")
    public List<UserResourse> getByLoginId(@PathVariable String loginId) {
        return repository.findByLoginId(loginId);
    }
}

我遇到以下错误:

2020-09-18 10:02:35.939 ERROR 16184 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.data.elasticsearch.ElasticsearchException: Cannot render document to JSON] with root cause

java.lang.StackOverflowError: null
    at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...