Я использую хранилище данных GAE с JDO для хранения информации о курсе.Каждый курс имеет список объектов GradeDefinition (например, «A = 90% +», «B = 80% +» и т. Д.)
Когда я пытаюсь изменить Список, новые элементы просто добавляются застарые элементы.Я подозреваю, что есть проблема с тем, как я использую отделяемые объекты и диспетчеры персистентности.
Основное краткое изложение:
@PersistenceCapable(detachable = "true")
public class Course
{
@Persistent(defaultFetchGroup = "true")
private GradingPolicy gradingPolicy;
}
@PersistenceCapable(detachable = "true")
public class GradingPolicy
{
@Persistent(defaultFetchGroup = "true")
private List<GradeDefinition> gradeDefinitions;
}
@PersistenceCapable(detachable = "true")
public class GradeDefinition
{
@Persistent
private String gradeName; //e.g. "A", "B", etc.
}
Затем, когда я хочу обновить список объектов GradeDefinition вкурс, я:
- Получить объект курса (который автоматически выбирает его GradingPolicy, который автоматически выбирает его список объектов GradeDefinition),
Подготовить мой новый список GradeDefinitionsс помощью
List<GradeDefinition> newDefinitions = new ArrayList<GradeDefinitions>();
newDefinitions.add(new GradeDefinition("X")); //for example
newDefinitions.add(new GradeDefinition("Y"));
Сброс списка путем вызова course.getGradingPolicy.setGradeDefinitions(newDefinitions);
- Сохранение изменений путем вызова
persistenceManager.makePersistent(course);
Но, если в политике оценки изначально были A, B и C, теперь она содержит A, B, C, X и Y!
Есть ли что-то, что мне нужно сделатьочистить список?Нужно ли вручную удалять старые GradeDefinitions?