Взгляните на следующий пример кода.
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
public class A implements Serializable
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String key;
@Persistent
private String m_Name;
@Persistent(mappedBy = "m_A")
private List<B> m_ListOfB;
//...
}
@PersistenceCapable(identityType = IdentityType.APPLICATION,detachable="true")
public class B implements Serializable
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String key;
@Persistent
private A m_A;
@Persistent
private List<B> m_Children;
//...
}
Когда я настраиваю экземпляр A, с несколькими B в списке m_ListOfB (у этих экземпляров B также есть несколько Children)и сохраняю его, я вижу только A в моем просмотрщике хранилища данных.Если я удаляю m_Children из B, и пытаюсь снова сохранить A, я вижу A и объекты в m_ListOfB.
Сохраняются так, как это, и у меня есть пустой Ctor по умолчанию для Serializable, чтобы не потерпеть неудачу.
Возможно, это проблема индексов?Datastore-indexes.xml выглядит следующим образом
<datastore-index kind="B" ancestor="true" source="manual">
<property name="m_ListOfB_INTEGER_IDX" direction="asc"/>
</datastore-index>
Не уверен, как должен выглядеть индекс для m_Children, или мне даже нужно его добавить.
Есть идеи?Спасибо