我遇到了 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/