1
我正在使用JDO嵌入實體。我已經通過this tutorial設置好了父母和子女實體。我的問題是,我似乎無法獲得對子實體進行的更改。這裏是我的兩個類:更新JDO嵌入實體字段
家長:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class TestEntity {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent
@Embedded
private TestEntitySub sub;
public TestEntitySub getSub() {
return sub;
}
public void setSub(TestEntitySub sub) {
this.sub = sub;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
兒童:
@PersistenceCapable
@EmbeddedOnly
public class TestEntitySub {
@Persistent
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
代碼來修改:
PersistenceManager pm = PMF.get().getPersistenceManager();
TestEntity test = pm.getObjectById(TestEntity.class, 75L); //object has id=75
test.getSub().setState("New State");
pm.makePersistent(test);
pm.close();
代碼運行沒有錯誤,但數據存儲不顯示變化。我已經嘗試了各種組合,也堅持子對象,在父級重置子字段等,沒有效果。如果我修改父母的name
而不是孩子的state
,那麼它就可以工作。那麼如何修改孩子的字段呢?