java - 在JDO中获得 child 的 parent

标签 java google-app-engine google-cloud-datastore jdo

我遇到了一个问题,即 child 没有对其 parent 的引用。假设我已经建立了双向关系,可以从 parent 那里获得 child ,并从 child 那里获得 parent 。但是我 child 的 parent 总是空着回来。

我有一个 parent

@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>();
}

带着一个 child
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Employee {

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

    @Persistent
    private Company company;

    @Persistent
    private String username;
}

我坚持的对象,
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);
    ...
}

然后,我在调试时看到“公司”为空,而其余的员工字段都在填充。对我想念的东西有什么想法吗?

最佳答案

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

关于java - 在JDO中获得 child 的 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24592574/

相关文章:

java - 从数据存储中检索实体的时间

java - 免费添加JTextFields硬代码

java - Google Cloud Datastore 过滤数据,其中包含列表中的项目

java - 根据验证结果设置不同的http状态码

python - jinja2或html textarea的简单标记

java - JDO - 更新一对一的 child

python - App Engine 的用户名和密码登录?

java - 如何在 GCS bucket java 上创建新文件

java - Java中以反斜杠零作为分隔符的单独文本

java - Hazelcast ILock 在锁定范围内更新 map 时无法在集群中工作