2016-05-24 3 views
0

Я закодировал простой отношения OneToMany между Категория и Публичные лиц,JPA Hibernate OneToMany Fetching

это мой Категория Entity:

@Entity 
public class Category implements Serializable { 

private static final long serialVersionUID = 1L; 
private Integer id; 
private String name; 
private List<Visitor> visitors = new ArrayList<Visitor>(); 

public Category() { 
} 

public Category(String name) { 
    this.name = name; 
} 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
public Integer getId() { 
    return id; 
} 

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

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

@OneToMany(fetch = FetchType.EAGER, mappedBy = "category", orphanRemoval =  true) 
public List<Visitor> getVisitors() { 
    return visitors; 
} 

public void setVisitors(List<Visitor> visitors) { 
    this.visitors = visitors; 
} 

} 

и это мой посетитель лицо:

@Entity 
public class Visitor extends User { 

private static final long serialVersionUID = 1L; 
private String passport; 
private String citizenship; 
private String gender; 
private Company company; 
private Category category; 

public Visitor() { 
} 

public Visitor(String email, String firstName, String lastName, 
     String country, String city, String phoneNumber, String picture, 
     String passport, String citizenship, String gender, Company company)     { 
    super(email, firstName, lastName, country, city, phoneNumber, picture); 
    this.passport = passport; 
    this.citizenship = citizenship; 
    this.gender = gender; 
    this.company = company; 
} 

public String getPassport() { 
    return passport; 
} 

public void setPassport(String passport) { 
    this.passport = passport; 
} 

public String getCitizenship() { 
    return citizenship; 
} 

public void setCitizenship(String citizenship) { 
    this.citizenship = citizenship; 
} 

@ManyToOne(fetch = FetchType.LAZY) 
public Category getCategory() { 
    return category; 
} 

public void setCategory(Category category) { 
    this.category = category; 
} 

public String getGender() { 
    return gender; 
} 

public void setGender(String gender) { 
    this.gender = gender; 
} 

@OneToOne 
public Company getCompany() { 
    return company; 
} 

public void setCompany(Company company) { 
    this.company = company; 
} 

} 

Это нормально, но теперь, когда я хочу получать своих посетителей, я хочу, чтобы каждый посетитель имел полный объект категории, , но это то, что у меня есть как данные JSON:

Как я могу решить эту проблему, чтобы получить всю информацию о категории посетителей?

+0

Из возвращенного JSON это выглядит как нет внешнего ключа в Visitor. Если у посетителя есть какой-либо внешний ключ, например category_id, вы можете указать его как @JoinColumn, и вы получите полную категорию –

ответ

0

Использование JPQL

select v from Visitor v left join fetch v.category 

, если у вас будет дубликатами попытаться использовать distinct

select distinct v from Visitor v left join fetch v.category 
Смежные вопросы