【发布时间】:2014-07-06 03:56:13
【问题描述】:
我遇到了孩子没有参考其父母的问题。假设我已经建立了双向关系,我可以从父母那里得到孩子,从孩子那里得到父母;但是我孩子的父母总是空手而归。
我有一个父母,
@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>();
}
有一个孩子,
@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);
...
}
然后我在调试时看到“公司”为空,而员工的其余字段已填充。对我缺少的东西有什么想法吗?
【问题讨论】:
-
关心分享你是如何检索对象的,你在哪里检查的东西是空的......请输入任何事务开始/提交边界和/或对象生命周期状态
-
已提供其他详细信息。
-
对象处于什么状态?持久清洁?分离?如果分离,您是否要求将公司字段分离? JDOHelper.getObjectState(obj).
-
状态似乎是“暂时的”。没有提出分离请求。
-
因此该字段将为空,即不再管理它们(pm 已关闭等)。建议您多注意从哪里获取对象以及关闭 PM 的位置
标签: java google-app-engine google-cloud-datastore jdo