对一对多关系对象的引用不会更新

时间:2014-06-22 01:08:41

标签: java spring java-ee spring-data spring-data-jpa

class Person
{
    List<Skill> skills;
    //... other stuff
}
class Skill{
    //stuff
}

mySkillList.add(skill);
person.add(skill);

person.getSkills();      //all skills have ID attribute null

repository.save(person);

person.getSkills();    //all skills now have ID not null, after saving

但是当我迭代mySkillList时,没有任何技能具有ID(名为id的属性仍为空)。

我试图了解出了什么问题,为什么保存后我的对象列表没有得到更新,当原始人反对&#39;技能清单得到更新。

我使用Spring-Data,如果这有任何区别的话。

更新

所以看起来我得到的行为是根据文档预期的。但我的要求是获取mySkillList中存储的某些技能的ID,而不是Person对象中存在的所有技能的ID。

我当然可以在保存之前和之后获得Person对象的所有技能,来计算所有新技能,但是新创建的技能会松开它们在{{{{{}中保存的顺序。 1}}这就是我想要的。换句话说,我需要所有与我将其插入到Person对象中的新技能相同的新技能。非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:3)

来自the Javadoc for SDC save

  

保存给定的实体。使用返回的实例进行进一步操作,因为save操作可能已完全更改了实体实例。

Spring Data适用于普通的POJO,它的合同特别指出你甚至可能不会获得相同的实例,具体取决于持久性设置。保存后,您需要从其存储库重新加载技能对象。

如果您希望在各种内存数据结构之间共享技能对象,则需要在构建它之前保存每项技能,然后再将其添加到列表和/或Person