Java 从其他实体检索ID时,Spring boot JPA反序列化问题

Java 从其他实体检索ID时,Spring boot JPA反序列化问题,java,json,spring-boot,jpa,Java,Json,Spring Boot,Jpa,我正在创建一个web程序,用spring boot、tomcat和JPA映射商店的占有率。 我已经创建了成员模型/服务/控制器,当我尝试更新、创建、删除它或从中获取信息时,它工作正常 但是,也没有创建存储,当我使用ownerId创建存储时,会收到一条错误消息,上面说: 错误消息 @Service public class StoreService { @Autowired private StoreRepository storeRepository;// p

我正在创建一个web程序,用spring boot、tomcat和JPA映射商店的占有率。 我已经创建了成员模型/服务/控制器,当我尝试更新、创建、删除它或从中获取信息时,它工作正常

但是,也没有创建存储,当我使用ownerId创建存储时,会收到一条错误消息,上面说:

错误消息

@Service
public class StoreService {
    
    @Autowired
    private StoreRepository storeRepository;//

    public void saveStore(Store store) {
        this.storeRepository.save(store); 
    }
[org.springframework.http.converter.httpMessageNodeTableException:JSON解析错误:无法构造
com.project.so2.models.Member
(尽管至少存在一个创建者):没有字符串参数构造函数/工厂方法从字符串值('1')反序列化;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造
com.project.so2.models.Member
(尽管至少存在一个创建者):没有从字符串值('1')反序列化的字符串参数构造函数/工厂方法 在[来源:(PushbackInputStream);行:4,列:18](通过引用链:com.project.so2.models.Store[“owner\u id”])]

我试图查找类似的问题,但没有找到任何适用的解决方案

型号

商店

请求有效负载:

{
    "name": "Pingo Azedo",
    "square_footage": "25m^2",
    "owner_id":{
        "member_id": "1"
    }
}

老实说,我不明白这个问题,也不知道如何解决它。如果有人能帮忙,我们将不胜感激

您需要在负载中使用属性名,而不是列名。更改您的请求负载,如下所示

{
  "name": "Pingo Azedo",
  "square_footage": "25m^2",
  "owner_id":{
       "id" : 1
    }
}

您正试图从json反序列化成员,但jackson不知道如何仅用“member_id”填充此成员,错误很明显是这样说的“找不到带字符串的构造函数”。因此,为了获得成员id,您需要添加新的类请求dto,例如:

String name;
String footage;
Long owner_id;

在控制器中使用新类,现在使用所有者id,使用存储库在数据库中查找它,然后将其设置为存储。

您可以发布整个类存储和成员吗?我刚刚发布了,只遗漏了getter和setters@Hưng Chucan您可以发布异常的堆栈跟踪吗?刚才这么做了@YohanAlokathis可能是请求负载的问题,您也可以发布请求负载吗?
{
    "name": "Pingo Azedo",
    "square_footage": "25m^2",
    "owner_id":{
        "member_id": "1"
    }
}
{
  "name": "Pingo Azedo",
  "square_footage": "25m^2",
  "owner_id":{
       "id" : 1
    }
}
String name;
String footage;
Long owner_id;