我有一个类似于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条记录,这很好用。唯一的问题是士兵缺少外键。我认为这可能与填充soldier表时不生成troop.Id有关。那么,我如何将此id填充到士兵?
我正在使用spring mvc + spring roo + json支持。
发布于 2013-04-03 10:52:06
自答:问题是Spring Roo在没有设置back引用的情况下生成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);
}
}https://stackoverflow.com/questions/15777267
复制相似问题