使用 JPA 存储库将 JSON 数组保存到数据库中
Persisting JSON Array into Database using JPA Repository
我正在学习spring引导。作为学习的一部分,我正在使用 REST Web 服务创建发票应用程序的后端。这是我的 JSON 请求。
{
"invoice": {
"invoiceNumber":"KB123456",
"custId":"123",
"pricingId":"234",
"empId":"456",
"gstCode":"HSN1234",
"invoiceSubTotal":"1234.00",
"invoiceGst":"18%",
"invoiceGstAmount":"123.45",
"invoiceTotal":"1357.45",
"invoiceLineItems": [
{
"invoiceLineNo":"KB123456-1",
"invoiceLineDesc":"Des123",
"invoiceQty":"2",
"invoicePpu":"0.18",
"invoiceGstCode":"HSN1235",
"invoiceGstPercentage":"18%",
"invoiceLineAmount":"123",
"invoiceLineTaxAmount":"12",
"invoiceLineTotalAmount":"135"
},
{
"invoiceLineNo":"KB123456-2",
"invoiceLineDesc":"Des124",
"invoiceQty":"4",
"invoicePpu":"0.17",
"invoiceGstCode":"HSN1235",
"invoiceGstPercentage":"18%",
"invoiceLineAmount":"126",
"invoiceLineTaxAmount":"14",
"invoiceLineTotalAmount":"140"
}
]
}
}
invoiceLineItems
最多可容纳 15 个对象。
这是我的实体发票和 InvoiceLineItems
Invoice.Java
@Entity
public class Invoice {
@Id
@GeneratedValue
private long invoiceId;
private String invoiceNumber;
private long custId;
private long pricingId;
private long empId;
private String gstCode;
private String invoiceSubTotal;
private String invoiceGst;
private String invoiceGstAmount;
private String invoiceTotal;
@Transient
@OneToMany(mappedBy="invoice")
private List<InvoiceLineItems> invoiceLineItems;
}
InvoiceLineItems.Java
@Entity
public class InvoiceLineItems {
@Id
@GeneratedValue
private long invoiceLineId;
private String invoiceNumber;
private String invoiceLineNo;
private String invoiceLineDesc;
private String invoiceQty;
private String invoicePpu;
private String invoiceGstCode;
private String invoiceGstPercentage;
private String invoiceLineAmount;
private String invoiceLineTaxAmount;
private String invoiceLineTotalAmount;
@ManyToOne
private Invoice invoice;
}
这是我的 REST 控制器
@RestController
public class InvoiceResourceController {
@Autowired
InvoiceRepository invoiceRepository;
InvoiceLineRepository invoiceLineRepository;
@PostMapping("/invoice")
public ResponseEntity<Invoice> createInvoice(@RequestBody Invoice invoice) {
List<InvoiceLineItems> invoiceLineItemsList = invoice.getInvoiceLineItems();
Invoice savedInvoice = invoiceRepository.save(invoice);
/* for (int i = 0; i < invoiceLineItemsList.size(); i++) {
InvoiceLineItems invLn = new InvoiceLineItems();
invLn = invoiceLineItemsList.get(i);
invoiceLineRepository.save(invLn);
} */
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(savedInvoice.getInvoiceNumber()).toUri();
return ResponseEntity.created(location).build();
}
}
现在,我有两个 table 发票和 Invoice_Line_Items 由 Spring Boot 创建。我能够将 Invoice
实体持久化到 Invoice
table,但我正在努力从请求中获取 InvoiceLineItems
数组对象并持久化到 Invoice_Line_Items
table.
如有任何帮助,我们将不胜感激。
解决了。
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "invoiceNumber")
private List<InvoiceLineItems> invoiceLineItems;
我正在学习spring引导。作为学习的一部分,我正在使用 REST Web 服务创建发票应用程序的后端。这是我的 JSON 请求。
{
"invoice": {
"invoiceNumber":"KB123456",
"custId":"123",
"pricingId":"234",
"empId":"456",
"gstCode":"HSN1234",
"invoiceSubTotal":"1234.00",
"invoiceGst":"18%",
"invoiceGstAmount":"123.45",
"invoiceTotal":"1357.45",
"invoiceLineItems": [
{
"invoiceLineNo":"KB123456-1",
"invoiceLineDesc":"Des123",
"invoiceQty":"2",
"invoicePpu":"0.18",
"invoiceGstCode":"HSN1235",
"invoiceGstPercentage":"18%",
"invoiceLineAmount":"123",
"invoiceLineTaxAmount":"12",
"invoiceLineTotalAmount":"135"
},
{
"invoiceLineNo":"KB123456-2",
"invoiceLineDesc":"Des124",
"invoiceQty":"4",
"invoicePpu":"0.17",
"invoiceGstCode":"HSN1235",
"invoiceGstPercentage":"18%",
"invoiceLineAmount":"126",
"invoiceLineTaxAmount":"14",
"invoiceLineTotalAmount":"140"
}
]
}
}
invoiceLineItems
最多可容纳 15 个对象。
这是我的实体发票和 InvoiceLineItems
Invoice.Java
@Entity
public class Invoice {
@Id
@GeneratedValue
private long invoiceId;
private String invoiceNumber;
private long custId;
private long pricingId;
private long empId;
private String gstCode;
private String invoiceSubTotal;
private String invoiceGst;
private String invoiceGstAmount;
private String invoiceTotal;
@Transient
@OneToMany(mappedBy="invoice")
private List<InvoiceLineItems> invoiceLineItems;
}
InvoiceLineItems.Java
@Entity
public class InvoiceLineItems {
@Id
@GeneratedValue
private long invoiceLineId;
private String invoiceNumber;
private String invoiceLineNo;
private String invoiceLineDesc;
private String invoiceQty;
private String invoicePpu;
private String invoiceGstCode;
private String invoiceGstPercentage;
private String invoiceLineAmount;
private String invoiceLineTaxAmount;
private String invoiceLineTotalAmount;
@ManyToOne
private Invoice invoice;
}
这是我的 REST 控制器
@RestController
public class InvoiceResourceController {
@Autowired
InvoiceRepository invoiceRepository;
InvoiceLineRepository invoiceLineRepository;
@PostMapping("/invoice")
public ResponseEntity<Invoice> createInvoice(@RequestBody Invoice invoice) {
List<InvoiceLineItems> invoiceLineItemsList = invoice.getInvoiceLineItems();
Invoice savedInvoice = invoiceRepository.save(invoice);
/* for (int i = 0; i < invoiceLineItemsList.size(); i++) {
InvoiceLineItems invLn = new InvoiceLineItems();
invLn = invoiceLineItemsList.get(i);
invoiceLineRepository.save(invLn);
} */
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(savedInvoice.getInvoiceNumber()).toUri();
return ResponseEntity.created(location).build();
}
}
现在,我有两个 table 发票和 Invoice_Line_Items 由 Spring Boot 创建。我能够将 Invoice
实体持久化到 Invoice
table,但我正在努力从请求中获取 InvoiceLineItems
数组对象并持久化到 Invoice_Line_Items
table.
如有任何帮助,我们将不胜感激。
解决了。
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "invoiceNumber")
private List<InvoiceLineItems> invoiceLineItems;