gpt4 book ai didi

java - Spring RequestBody Mapping 将所有属性映射为空值

转载 作者:行者123 更新时间:2023-11-30 07:00:25 24 4
gpt4 key购买 nike

我有以下 RESTfull 方法:

    @RequestMapping(value = "/budgetLines",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public void create(@RequestBody BudgetLine budgetLine) {
System.out.println("Before Persisting in the repository " + budgetLine);
budgetLineRepository.save(budgetLine);
}

我在 Web 应用程序中使用此方法,我使用网络分析工具(在 Chrome 的 Web 开发人员工具中)检查发送的对象是否有效(除 id 之外的所有属性都设置了有效值),但是随后传递给存储库的对象仅包含空属性。

这里是一个例子:

{
"Name":"testLabel",
"Label":"testName",
"AnnualBudget":9000
}

BudgetLine 类定义如下:

@Entity
@Table(name = "T_BUDGETLINE")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class BudgetLine implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "label")
private String Label;

@Column(name = "name")
private String Name;

@Column(name = "annual_budget", precision=10, scale=2)
private BigDecimal AnnualBudget;

@OneToMany(mappedBy = "budgetLine")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Report> reportss = new HashSet<>();

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getLabel() {
return Label;
}

public void setLabel(String Label) {
this.Label = Label;
}

public String getName() {
return Name;
}

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

public BigDecimal getAnnualBudget() {
return AnnualBudget;
}

public void setAnnualBudget(BigDecimal AnnualBudget) {
this.AnnualBudget = AnnualBudget;
}

public Set<Report> getReportss() {
return reportss;
}

public void setReportss(Set<Report> Reports) {
this.reportss = Reports;
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}

BudgetLine budgetLine = (BudgetLine) o;

if (id != null ? !id.equals(budgetLine.id) : budgetLine.id != null) return false;

return true;
}

@Override
public int hashCode() {
return (int) (id ^ (id >>> 32));
}

@Override
public String toString() {
return "BudgetLine{" +
"id=" + id +
", Label='" + Label + "'" +
", Name='" + Name + "'" +
", AnnualBudget='" + AnnualBudget + "'" +
'}';
}

public BudgetLine() {
}
}

最佳答案

尝试将参数的第一个字母小写

{
"name":"testLabel",
"label":"testName",
"annualBudget":9000
}

Spring 在很大程度上依赖于标准的 Java 命名约定,因此我建议您也遵循它们。在你的例子中,你应该用小写的第一个字母命名你的类字段。

关于java - Spring RequestBody Mapping 将所有属性映射为空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30598627/

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