如何从Google App Engine(Java)数据存储区中的子实体查询父实体?

用户名

我已经使用JPA注释在部门和雇员之间创建了一对多关系。实体是:

Department(Parent)
    String Id
    String Name
    List Employee(@OneToMany) 

Employee(Child)
    Key key
    String firstName
    String lastName
    String Address
    Department dept(@ManyToOne)

输入员工的名字时,我想显示该员工的详细信息(姓氏和地址),以及他所属的部门。我没有找到任何从子实体获取父信息的解决方案。有什么方法可以从其子实体获取有关父实体的信息吗?

我认为一种可能的解决方案是从child获取父ID,在另一个查询中获取Parent Detail。但我想在单个查询中提供有关员工的所有信息。这可能吗?

这是我的代码。

Department Entity:
    @Entity
    public class Department {

          @Id
          private String id;

          private String description;

          @OneToMany(mappedBy = "department", fetch=FetchType.EAGER, cascade = CascadeType.ALL)
          private List<Employee> employee = new ArrayList<Employee>();

          public String getId() {
              return id;
          }

          public void setId(String id) {
              this.id = id;
          }

          public String getDescription() {
            return description;
          }

          public void setDescription(String description) {
            this.description = description;
          }

          public List<Employee> getEmployee () {
                return employee ;
          }

          public void setEmployee (List<Employee > employee) {
                this.employee = employee ;
          }
    }

Employee Entity:
    @Entity
    public class Employee {
             @Id
             @GeneratedValue(strategy = GenerationType.IDENTITY)
             private Key key;

             private String firstName;
             private String lastName;
             private String Address;

             private String parent_Id;

             @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
             private Department department;

             public Key getKey() {
            return key;
             }

             public String getFirstName() {
                 return firstName;
             }

             public void setFirstName(String firstName) {
                 this.firstName = firstName;
             }

             public String getLastName() {
                 return lastName;
             }

             public void setLastName(String lastName) {
                 this.lastName = lastName;
             }

             public String getAddress() {
                return Address;
             }

             public void setAddress(String Address) {
                this.Address = Address;
             }
    }

Android代码在后台插入实体

Departmentendpoint.Builder builder1 = new                                          Departmentendpoint.Builder(AndroidHttp.newCompatibleTransport(), new JacksonFactory(), null);
Departmentendpoint dptendpoint = CloudEndpointUtils.updateBuilder(builder1).build();

    Department dpt = new Department();
    dpt.setDescription("Water Service"); 
    List<Employee> m = new ArrayList<Employee>();       
    Employee mgr2= new Employee();
    mgr2.setFirstName("Avinash"+i);
    mgr2.setLastName("Patel"+i);
    mgr2.setAddress("Vadodara");
    m.add(mgr2);    
    dpt.setEmployee(m);

    try {
        dptendpoint.insertDepartment(dpt).execute();
    } catch (IOException e) {
        e.printStackTrace();
    }
安德烈·沃尔金(Andrei Volgin)

您可以从子实体的键获取父ID,但必须从数据存储区获取父实体。

您可以在每个员工实体中存储一个部门名称,这将节省一次get操作,但会浪费额外的数据和更复杂的代码(您必须考虑诸如部门名称更改之类的情况)。

更好的解决方案是将部门实体保留在内存缓存中。这样,您可以保存到数据存储的行程,并使数据模型和代码保持简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询所有实体的Google App Engine数据存储区

来自分类Dev

如何使用Java从Google App Engine数据存储区中的实体提取属性

来自分类Dev

使用Java随机查询Google App Engine数据存储区实体

来自分类Dev

Google App Engine数据存储区如何获取Key <?>的实体

来自分类Dev

覆盖Google App Engine- Java中的数据存储区实体

来自分类Dev

Google App Engine(Python)-数据存储区正在复制实体

来自分类Dev

Google App Engine数据存储区按属性删除实体

来自分类Dev

列出Google App Engine数据存储区中的所有实体时出现AttributeError

来自分类Dev

在Google数据存储区查询中的子实体属性上过滤实体

来自分类Dev

在Google数据存储区查询中的子实体属性上过滤实体

来自分类Dev

如何从App-Engine数据存储区实体类型中获取最新的25个条目

来自分类Dev

App Engine数据存储区:如何批量删除本地主机上的数据存储区实体?

来自分类Dev

如何使用Google数据存储在Google App Engine中动态创建多个实体(Python)

来自分类Dev

Google App Engine:根据发布数据创建数据存储区实体

来自分类Dev

如何使用64位无符号整数作为App Engine数据存储区中的实体键并保留排序顺序?

来自分类Dev

Google App Engine数据存储区重新索引现有实体

来自分类Dev

Google App Engine转到数据存储区,使用键检查实体是否存在

来自分类Dev

Google App Engine NDB数据存储区get_by_id以获取实体

来自分类Dev

为什么我的Google App Engine数据存储区实体在删除后会重新出现?

来自分类Dev

如何使实体靠近Google App Engine Objectify中的特定实体?

来自分类Dev

如何使实体靠近Google App Engine Objectify中的特定实体?

来自分类Dev

Google App Engine数据存储区查询返回陈旧数据

来自分类Dev

Google App Engine数据存储区实体设计,可最大程度地降低成本并提高性能

来自分类Dev

在不初始化特定属性的情况下创建Google App Engine数据存储区实体

来自分类Dev

在Google App Engine上运行数据存储区查询

来自分类Dev

在Google App Engine数据存储区上执行大型查询

来自分类Dev

IN查询Google App Engine数据存储区Java,其优先级基于列表中匹配关键字的数量

来自分类Dev

Google App Engine数据存储区的大表是如何设计的?

来自分类Dev

Google App Engine Java数据存储区查询-是否限制结果?

Related 相关文章

  1. 1

    查询所有实体的Google App Engine数据存储区

  2. 2

    如何使用Java从Google App Engine数据存储区中的实体提取属性

  3. 3

    使用Java随机查询Google App Engine数据存储区实体

  4. 4

    Google App Engine数据存储区如何获取Key <?>的实体

  5. 5

    覆盖Google App Engine- Java中的数据存储区实体

  6. 6

    Google App Engine(Python)-数据存储区正在复制实体

  7. 7

    Google App Engine数据存储区按属性删除实体

  8. 8

    列出Google App Engine数据存储区中的所有实体时出现AttributeError

  9. 9

    在Google数据存储区查询中的子实体属性上过滤实体

  10. 10

    在Google数据存储区查询中的子实体属性上过滤实体

  11. 11

    如何从App-Engine数据存储区实体类型中获取最新的25个条目

  12. 12

    App Engine数据存储区:如何批量删除本地主机上的数据存储区实体?

  13. 13

    如何使用Google数据存储在Google App Engine中动态创建多个实体(Python)

  14. 14

    Google App Engine:根据发布数据创建数据存储区实体

  15. 15

    如何使用64位无符号整数作为App Engine数据存储区中的实体键并保留排序顺序?

  16. 16

    Google App Engine数据存储区重新索引现有实体

  17. 17

    Google App Engine转到数据存储区,使用键检查实体是否存在

  18. 18

    Google App Engine NDB数据存储区get_by_id以获取实体

  19. 19

    为什么我的Google App Engine数据存储区实体在删除后会重新出现?

  20. 20

    如何使实体靠近Google App Engine Objectify中的特定实体?

  21. 21

    如何使实体靠近Google App Engine Objectify中的特定实体?

  22. 22

    Google App Engine数据存储区查询返回陈旧数据

  23. 23

    Google App Engine数据存储区实体设计,可最大程度地降低成本并提高性能

  24. 24

    在不初始化特定属性的情况下创建Google App Engine数据存储区实体

  25. 25

    在Google App Engine上运行数据存储区查询

  26. 26

    在Google App Engine数据存储区上执行大型查询

  27. 27

    IN查询Google App Engine数据存储区Java,其优先级基于列表中匹配关键字的数量

  28. 28

    Google App Engine数据存储区的大表是如何设计的?

  29. 29

    Google App Engine Java数据存储区查询-是否限制结果?

热门标签

归档