从JPA同时填充主明细表

从JPA同时填充主明细表,jpa,Jpa,我有一个双向实体,类似于hibernate示例中的实体: 它将在“部队”表中插入1条记录,在“士兵”表中插入2条记录,效果良好。唯一的问题是士兵的外键不见了。我认为这可能与部队有关。士兵表填充时不会生成Id。那么,我如何将此id填充到士兵 我正在使用SpringMVC+SpringRoo+json支持自我回答:问题是SpringRoo生成AspectJ代码来设置士兵,而不设置back引用,尽管我已经指定这是一种双向关系。所以我必须自己加上它 public void Troop.setSoldi

我有一个双向实体,类似于hibernate示例中的实体:

它将在“部队”表中插入1条记录,在“士兵”表中插入2条记录,效果良好。唯一的问题是士兵的外键不见了。我认为这可能与部队有关。士兵表填充时不会生成Id。那么,我如何将此id填充到士兵


我正在使用SpringMVC+SpringRoo+json支持

自我回答:问题是SpringRoo生成AspectJ代码来设置士兵,而不设置back引用,尽管我已经指定这是一种双向关系。所以我必须自己加上它

public void Troop.setSoldiers(Set<Soldier> soldiers) {
    this.soldiers= soldiers;  // spring roo only generate this line!

    // I add the following segment:
    for(Soldier soldier: soldiers) {
        soldier.setTroop(this);
    }
}

您能告诉我们如何在Java代码中设置士兵对象中的部队引用吗?您是如何通知生成器双向关系的?JPA只知道两个单向的,上一次我检查时(我承认是在不久前),Roo在这方面没有什么不同,引用完整性在程序员级别,就像原始JPA一样。
{
  "TroopName": "ABC", 
  "Soldiers": [{"Name":"Jack", "Age": "40"}, {"Name":"TOM", "Age": "30"}]
}
public void Troop.setSoldiers(Set<Soldier> soldiers) {
    this.soldiers= soldiers;  // spring roo only generate this line!

    // I add the following segment:
    for(Soldier soldier: soldiers) {
        soldier.setTroop(this);
    }
}