所有された1対多の関係を作成するとき、Javaで、低レベルのDatastoreAPIとDataNucleusJDOを使用することで結果のレコードに違いがあることに気づきました。これが意図的なものなのか、それとも修正する方法なのかわからない。
例えば、
次のリンクに従業員の住所が複数ある場合:
https://developers.google.com/appengine/docs/java/datastore/entities#Ancestor_Paths
次のように低レベルのデータストアAPIを使用すると、従業員レコードには住所列(つまりプロパティ)が表示されません。
Entity employee = new Entity("Employee");
datastore.put(employee);
Entity address_home = new Entity("Address", employee.getKey());
datastore.put(address_home);
Entity address_mailing = new Entity("Address", employee.getKey());
datastore.put(address_mailing);
JDOを使用すると、従業員レコードに住所列(つまりプロパティ)が表示されます。
@PersistenceCapable
public class Employee {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
    @Persistent(mappedBy = "employee")
    private List<Address> addresses;
    List<Address> getAddresses() {
        return addresses;
    }
    void setAddresses(List<Address> addresses) {
        this.addresses = addresses;
    }
    // ...
}
@PersistenceCapable
public class Address {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
    @Persistent
    private Employee employee;
    @Persistent
    private String Street;
    ...
 }
余分なプロパティは無害です。しかし、なぜこれがJDOに必要なのですか?
開発サーバー上のDataNucleusv2でGAE/J1.7.2を使用しています。