我有一个类似于hibernate示例中的双向实体: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-association
@Entity
public class Troop {
@OneToMany
@JoinColumn(name="troop_fk") //we need to duplicate the physical information
public Set<Soldier> getSoldiers() {
...
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk", insertable=false, updatable=false)
public Troop getTroop() {
...
}
现在我需要通过JSON将所有记录保存到2个表中:
{
"TroopName": "ABC",
"Soldiers": [{"Name":"Jack", "Age": "40"}, {"Name":"TOM", "Age": "30"}]
}
它将在部队表中插入1条记录,在士兵表中插入2条记录,工作正常。唯一的问题是在士兵中缺少外键。我认为它可能与troop.Id相关,当士兵表填充时不会生成。那我怎么能把这个id填充给士兵?
我正在使用spring mvc + spring roo + json support
答案 0 :(得分:0)
我会自己回答我的问题。问题是,当spring roo生成aspectj代码来设置士兵时,它不会设置后向引用(尽管我已经告知它是双向关系)。我必须自己添加。
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);
}
}