从两个OneToMany关系

时间:2016-06-23 16:12:37

标签: jpa

我想在前端显示带有JPA的数据库中的数据,即显示Person的详细信息。详细信息可以是 0..n Adresse s和 0..m Phone s。实体如下所示:

@Entity
public class Person implements Serializable { 
   @Id @GeneratedValue
   private int id;
   private String name;

   @OneToMany(mappedBy="person")
   private List<Address> addresses = new ArrayList<Address>();

   @OneToMany(mappedBy="person")
   private List<Phone> phones = new ArrayList<Phone>();   
   // plus     getter and setter
}

@Entity
public class Address implements Serializable { 
   @Id @GeneratedValue
   private int id;

   @ManyToOne
   private Person person;
   private String onestring;         // plus getter and setter
}

@Entity
public class Phone implements Serializable { 
   @Id @GeneratedValue
   private int id;

   @ManyToOne
   private Person person;
   private String anotherstring;         // plus getter and setter
}

当激活延迟加载时,......

@PersistenceContext
private EntityManager em;

public Person getPerson(int id) {
   return em.find(Person .class, id);
}

...只会在adressesphones上提供代理。

问题:

  1. 显示前端所有数据的好方法,即人及其所有的广告和手机? (除了将FetchType设置为EAGER)。
  2. 有没有办法将addressesphones同时提取到Person的同一个实例中,或者我必须两次获取Personaddresses一次phones 1}},有一次data-autocomplete="@Url.Action("AutoCompleteCity", "Search")" )省略笛卡尔积?

0 个答案:

没有答案