java - 在 JDO 中获取 child 的 parent

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

我遇到了 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 之前触摸父字段(并将保留值设置为 true,或在 PM 关闭时分离)将导致父字段被设置。

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

相关文章:

java - 如何概括 Selenium Cucumber 中的登录步骤并避免功能文件中的重复步骤?

python - 如何自动将测试数据加载到 AppEngine 中?

java - 为什么 Google App Engine JDBC 连接 URL 不起作用?

google-cloud-datastore - 使用 Dataflow 的 DatastoreIO 查询命名空间

google-app-engine - App Engine 数据存储区中的 key_id 和 key_name 有什么区别?

java - 支柱2.3 : runtime add Interceptor

将日期解析为 MS JSON 日期格式的 Java 方法

java - 使用 HTTP Commons Client 的基本身份验证

Java import com.google.common.io.Files 无法解析

python - 如何在不知道类名的情况下使用 NDB 查询