当我试图获取以前插入到数据库中的更新数据时,我的代码中遇到了一些问题。邮递员的错误代码:
“JSON分析错误:无法反序列化START_OBJECT令牌外的java.lang.Integer实例;嵌套异常为com.fasterxml.jackson.DataBind.JSONMappingException:无法反序列化START_OBJECT令牌外的java.lang.Integer实例\n位于[source:java.io.PushBackInputStream@647F9992;行:1,列:1]”
我有两个名为Payment和Order的实体,其中Payment将Order作为@OneToOne实体保存。付款类别:
@Entity
@Table(name = "tbl_payment")
public class Payment {
@Id
@GeneratedValue
@Column(name = "payment_id")
Integer id;
@OneToOne(cascade=CascadeType.ALL)
private Order order;
@Column(name = "payment_receivable")
private double receivable;
@Column(name = "payment_outstanding")
private double outstanding;
@Column(name = "payment_status")
private String status;
public Payment(Order order, double receivable, double outstanding, String status) {
this.order = order;
this.receivable = receivable;
this.outstanding = outstanding;
this.status = status;
}
public Payment() {
}
@Override
public String toString() {
return "Payment{" +
"id=" + id +
", order=" + order +
", receivable=" + receivable +
", outstanding=" + outstanding +
", status='" + status + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
public double getReceivable() {
return receivable;
}
public void setReceivable(double receivable) {
this.receivable = receivable;
}
public double getOutstanding() {
return outstanding;
}
public void setOutstanding(double outstanding) {
this.outstanding = outstanding;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
订单类别:
@Entity
@Table(name = "tbl_order")
public class Order {
@Id
@GeneratedValue
@Column(name = "order_id")
Integer id;
@Column(name = "order_amount")
int amount;
@Column(name = "sale_id")
String sale_id;
public Order(int amount, String sale_id) {
this.amount = amount;
this.sale_id = sale_id;
}
public Order() {
}
@Override
public String toString() {
return "Order{" +
"id=" + id +
", amount=" + amount +
", sale_id='" + sale_id + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public String getSale_id() {
return sale_id;
}
public void setSale_id(String sale_id) {
this.sale_id = sale_id;
}
}
在我的控制器中,我将传入payment_id并使用它将支付条目从未支付状态更新为已支付状态。这就是我得到上述错误的地方。
服务段:
@Transactional
@Modifying
public Payment clearPaymentStatus(Integer p){
TypedQuery query = em.createQuery("update Payment p set p.payment_status = ?1 where p.id = ?5", Payment.class);
query.setParameter(1, "PAID");
query.setParameter(5, new Integer(p));
return ((Payment) query.getSingleResult());
}
@RequestMapping("/clearpayment")
public @ResponseBody ResponseEntity<Payment> ClearPayment(@RequestBody Integer payment_id){
return new ResponseEntity<Payment>( paymentService.clearPaymentStatus(payment_id), HttpStatus.ACCEPTED);
}
Add从postman那里工作得很好,只有update有问题。任何建议都是好的。谢谢你!
JPA与JSON无关。JSON只是一种输入格式。很可能您试图通过某种控制器提供一些json对象。此控制器隐式尝试为您转换对象,但失败。通常,发生这种情况是因为JSON的格式无效,或者至少不能映射到对象层次结构上。因此,请仔细检查您的JSON,并尝试查看它应该如何映射。
现在,很难从发布的数据中看出更多信息,但很明显,您在引擎希望看到整数的地方提供了一个对象(用方括号括起来的东西)。这是一个内在的关系映射。
因此,正如我们的同事已经指出的那样,在序列化过程中失败的对象(稍后在流中)应该被传递给JPA引擎进行数据库操作,但这个特殊的问题与JPA无关。
我的Json看起来类似于(并且它是不可修改的) 我知道这个问题已经被问了很多次了,甚至我也得到了一些帮助,例如:无法反序列化START_OBJECT令牌之外的java.util.ArrayList实例 但我还是无法克服这个错误
我正在编写一个。NET应用程序,它应该读取一个大约200页长的。docx文件(通常是documentformat.openxml2.5),以查找文档应该包含的某些标记的所有出现情况。明确地说,我不是在寻找OpenXML标记,而是应该由文档编写器设置到文档中的标记,作为在第二阶段需要填充的值的占位符。此类标记应采用以下格式: (其中TAG可以是任意字符序列)。正如我所说的,我必须找到这类标签的所有出
当然,所有依赖项(子类追加在同一个字符串中)。 从外部API获取数据的代码是; 当我运行代码并试图获取adress“API/3”时,出现以下错误:
问题内容: 我正在使用a 从sql数据库搜索查询。这是我的代码。 = JComboBox 但是,当我在组合框中键入一个字母时,它将添加数据库中的所有项目。我知道总是给出一个空字符串。而且,只要我键入一个字母,组合框的文本字段就会为空(我不能键入两个字母的单词)。如何解决这个问题?谢谢。 问题答案: 问题的原因如下: 始终为空是因为您在打电话之前先打电话。这意味着,在获得所选内容之前,将清除(与所选
下面是put请求的控制器映射: 当我运行以下来自邮递员的请求时: 我得到以下异常 我可能很简单,但我不明白我错过了什么?
无效的JSON输入:无法反序列化实例脱离START_OBJECT令牌;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化START_OBJECT标记外的``java.util.date`实例 我试图设置默认的日期选择器显示太平洋时间在反应使用功能组件。useState()