对于在明细记录中使用外键创建主记录和明细记录进行了大量研究,但未能为我找到正确的示例/信息,从而无法更好地理解如何创建此类记录。 我有一个有标题(客户订单)和详细信息(交货)的角形。 我正在处理内存中的所有内容,直到单击“保存”按钮为止,这时我应该在customerorder表中创建一条记录,并为每个交货(可能有多个)在数据库的deliverynotes表中创建交货记录记录。 交货单表通过外键与客户订单有关系。
要创建记录,请单击保存;
console.log('BEFORE custOrder');
this._custOrderService.createCustomerOrder(this.custOrder).subscribe((custOrderSubs) => {
// this.orderform.reset();
// Set order reference to the delivery notes created.
console.log('IN custOrder');
const ordPK = Number(custOrderSubs.delOrdRef);
this.custOrder.delOrdRef = ordPK;
console.log('Ord Num: ' + this.custOrder.delOrdRef);
}, (errorcustord) => {
console.log(errorcustord);
});
console.log('AFTER custOrder');
console.log('BEFORE delNote');
this.delnotearray.forEach(element => {
console.log('IN delNote');
const delnotestring = '{"delNote": ' + JSON.stringify(element) + ',' + '"delOrder": ' + JSON.stringify(this.custOrder) + '}';
// this._delNotesService.createDelNote(element, this.custOrder).subscribe((delNoteSubs) => {
this._delNotesService.createDelNote(delnotestring).subscribe((delNoteSubs) => {
}, (errordelnotes) => {
console.log(errordelnotes);
});
});
console.log('AFTER delNote');
我有两个单独的角度服务,一个用于客户订单,另一个用于交货单CRUD操作。
在后端,我有一个使用Spring Boot和Hibernate的Java REST服务-控制器的一部分;
@PostMapping("/delnote")
public DeliveryNote createDelNote(@RequestBody String jsonString) {
DeliveryNote deliveryNote = new DeliveryNote();
DeliveryOrder deliveryOrder = new DeliveryOrder();
// System.out.println("args =>" + jsonString.toString());
try{
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(jsonString);
JSONObject jsonDel = (JSONObject) json.get("delNote");
deliveryNote.setDeliveryInstructions(jsonDel.get("deliveryInstructions").toString());
System.out.println("json.simple:" + jsonDel.get("DelOrdRef"));
JSONObject jsonOrd = (JSONObject) json.get("delOrder");
deliveryOrder.setDelOrdRef((Long)jsonOrd.get("DelOrdRef"));
deliveryNote.setDelOrdRef(deliveryOrder);
} catch(ParseException pe){
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
return deliveryNoteRepository.save(deliveryNote);
}
我尝试了各种方法来正确使用JSON和使用相应的对象,而不是上面的字符串和字符串操作,但到目前为止没有成功。
以上方法也造成了另一个问题;角度服务(可观察到的)正在尝试在创建客户订单之前创建交货单,这当然是一个问题(参照完整性问题)并返回服务器内部错误。
我刚冬眠,我确信它们是我的方法中的一个缺陷,结果导致我创造了这种“并发症”,而我本来不想让这种并发症出现。
您能帮我一个这样的父母/孩子如何记录使用我所指称的技术正常进行的添加(和更新)吗?
谢谢
---更新
解决了!更改了各个组件以反映正确的JSON传输,并确定了与外键问题有关的问题,该问题与未设置为CustomerOrder类的DelNote类中的DelOrdRef有关;
import { CustomerOrder } from './customerorder';
export class DelNote {
delNoteRef: number;
delNoteDate: Date;
delOrdRef: CustomerOrder;