gpt4 book ai didi

java - 收到的 JSON 与使用 Spring Rest 和 Hibernate 发送的 JSON 不同

转载 作者:行者123 更新时间:2023-12-01 17:40:12 31 4
gpt4 key购买 nike

我在 Spring Rest 和 Hibernate 方面遇到困难。我正在从 Android 应用程序进行 API 调用,其中一个 POST 调用似乎有问题。

我有 2 个类:PlayerGame

@Entity
@Table(name = "Game", schema = "statistics")
public class GameEntity {
private int matchId;
private int firstPlayer;
private int secondPlayer;

@Column(name = "first_player")
public int getFirstPlayer() {
return firstPlayer;
}

public void setFirstPlayer(int firstPlayer) {
this.firstPlayer = firstPlayer;
}

@Column(name = "second_player")
public int getSecondPlayer() {
return secondPlayer;
}

public void setSecondPlayer(int secondPlayer) {
this.secondPlayer = secondPlayer;
}
}

@Entity
@Table(name = "Players", schema = "statistics")
public class PlayersEntity {
private int playerId;
private String name;

@Id
@Column(name = "player_id")
public int getPlayerId() {
return playerId;
}

public void setPlayerId(int id) {
this.playerId = id;
}

@Basic
@Column(name = "name")
public String getName() {
return name;
}Ga

public void setName(String name) {
this.name = name;
}
}

当我为 Player 发送 POST 时:它有效。但是,当我对 Game 执行相同操作时,它会拒绝它,因为它没有正确接收值 - 当我调试 @RequestBody 时,我发现收到的实体包含不正确的值(全部为 0,因为所有字段都是整数):

incorrect json values

尽管如此,发送的 JSON 具有正确的值:

correct JSON

我最终遇到了 SQL 错误(因为 Game 中的 3 个 id 中的 2 个是引用 Player 的外键)。

我真的不明白为什么,也不知道如何在 Spring 上记录 HTTP 请求/响应。

无论如何,提前感谢任何指导我做出正确 react 并保持安全的人。

最佳答案

事情是:

在您的实体中,该字段称为“firstPlayer”,而在您的 JSON 中,该字段称为“first_player”。

请注意,您在字段上添加的 @Column 注释仅对存储到数据库表中有效,不适用于后端和前端之间的 JSON 转换。

为此,我可能会构建一个自定义 DTO/VO,而不是重用 @Entity,并使用适当的 Jackson 映射注释:@JsonProperty。

@JsonProperty("player_id")
private int playerId;

关于java - 收到的 JSON 与使用 Spring Rest 和 Hibernate 发送的 JSON 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60966757/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com