【发布时间】:2014-04-16 23:29:51
【问题描述】:
好的,我有一个使用 GAE 并因此使用数据存储的应用程序。
假设我有多家公司 A、B 和 C,每个公司内都有员工 X、Y 和 Z。公司与员工之间的关系将是 OneToMany,公司是所有者。这导致公司密钥的形式为
long id = 4504699138998272; // Random Example
Key CompanyKey = KeyFactory.createKey(Company.class.getSimpleName(), id);
员工密钥的格式为
long id2 = 5630599045840896;
Key EmployeeKey = KeyFactory.createKey(CompanyKey,Employee.class.getSimpleName(),id2);
一切都很好,没有问题,直到在前端,在jsp表示期间。有时我需要生成报告,或打开员工个人资料,在这种情况下,包含他的信息的 div 将获得如下 id
<div class="employeeInfo" id="<%=employee.getKey().getId()%>" > .....</div>
并且这个 div 有一个 onclick/submit 事件,它将对员工个人资料的新修改 ajax 到 serverlet,此时我必须指定员工的主键,(我认为我可以很容易地从div id),但它在服务器端不起作用。
问题是我知道键的员工字符串部分和长部分,但不知道父键。为了节省时间,我尝试了这个,它没有工作
Key key = KeyFactory.creatKey(Employee.class.getSimpleName(); id);
Employee X = em.find(Employee.class,key);
X 总是返回 null。
对于如何在不知道其父键的情况下通过键查找或“查询”实体的任何想法,我将不胜感激(因为我不想重新调整实体类)
非常感谢!!
【问题讨论】:
-
当然我可以将公司长 id 添加到 div id 并重建两个键,但我觉得有更好的方法来做到这一点。另外,我不认为我应该在 html 中发布主键,所以有人可以请教应该怎么做!非常感谢!!
标签: google-app-engine jpa google-cloud-datastore