Java 生孩子';JDO中的父对象

Java 生孩子';JDO中的父对象,java,google-app-engine,google-cloud-datastore,jdo,Java,Google App Engine,Google Cloud Datastore,Jdo,我遇到了一个问题,那就是孩子没有提到他的父母。假设我已经建立了一个双向关系,我可以从父母那里得到孩子,从孩子那里得到父母;然而,我孩子的父母总是回来 我有一个孩子的父母 @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Company { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)

我遇到了一个问题,那就是孩子没有提到他的父母。假设我已经建立了一个双向关系,我可以从父母那里得到孩子,从孩子那里得到父母;然而,我孩子的父母总是回来

我有一个孩子的父母

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Company {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent(mappedBy = "company")
    private List<Employee> employees = new ArrayList<Employee>();
}
我通过

Company newCompany = new Company();
Employee newEmployee = new Employee();
newEmployee.setUsername("ryan");
newCompany.getEmployees().add(newEmployee);
pm.makePersistent(newCompany);
我正在这样访问对象

Query query = pm.newQuery(Employee.class,"username == s");
query.declareParameters("String s");
List<Employee> employees = (List<Employee>)query.execute(username);
pm.close();

if (employees.size() > 0)
{
    Employee employee = employeeList.get(0);
    ...
}
queryquery=pm.newQuery(Employee.class,“用户名==s”);
查询.申报参数(“字符串s”);
List employees=(List)query.execute(用户名);
pm.close();
如果(employees.size()>0)
{
Employee=employeeList.get(0);
...
}

然后,在调试时,我将“company”视为null,同时填充员工的其余字段。有没有关于我遗漏了什么的想法?

根据对象状态,父对象的获取取决于您在哪里检查它。如果您的PM已在该点关闭,则它将不会获取父字段。在关闭PM之前触摸父字段(并将retainValues设置为true,或在PM关闭时分离)将导致父字段被设置。

请分享您检索对象的方式,以及检查内容是否为空的位置。。。请输入任何事务开始/提交边界和/或对象生命周期状态。已经提供了传统详细信息。对象处于什么状态?持久清洁?独立的如果分离,您是否要求分离公司字段?getObjectState(obj)。该状态似乎是“暂时的”。未提出分离请求。因此该字段将为空,即不再对其进行管理(pm已关闭等)。建议您更加注意从何处获取物品以及在何处关闭PM
Query query = pm.newQuery(Employee.class,"username == s");
query.declareParameters("String s");
List<Employee> employees = (List<Employee>)query.execute(username);
pm.close();

if (employees.size() > 0)
{
    Employee employee = employeeList.get(0);
    ...
}