簡體   English   中英

JPA / JDO的OneToMany對象化

[英]OneToMany from JPA/JDO to Objectify

我正在從Datanucleus轉向Objectify。 如何為Objectify重寫以下OneToMany代碼?

@Entity
public class Person{
  …
  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  private Set<Dog> dogs = new HashSet<Dog>();
  …
}

現在查詢Person並得到我所有的狗,我只是做

public Person findById(String uid) {
  EntityManager mgr = getEntityManager();
  try {
    String jpql = "SELECT a FROM Person a WHERE a.uid = :uid";
    TypedQuery<Person> q = mgr.createQuery(jpql, Person.class);
    q.setParameter("uid", uid);
    return q.getSingleResult();
  } catch (Exception e) {// entityNotFoundException or NoResultException
    return null;
  } finally {
    mgr.close();
  }
}

我可以像狗一樣遍歷

Person owner = personDao.findById(id.getUid());
for (Dog dog : owner.getDogs()) {
  //… do stuff
}

順便說一下, uid不會被注釋為@Id因此它不是鍵。

基本上,如果您希望對象A“具有許多”對象B,則必須使A具有一個字段,該字段包含指向B的指針(鍵)的列表。 這在官方的Objectify文檔[1]中進行了描述。

[1] https://github.com/objectify/objectify/wiki/Entities#one-to-many-relationships

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM