2016-05-24 20 views
0

私はこれが私のカテゴリーのエンティティである、JPA HibernateはOneToManyフェッチ

をカテゴリーとビジターのエンティティ間の単純な関係OneToManyをコード化されています:

@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; 
} 

} 

これはOkですが、私は訪問者を取得したいときは、それぞれの訪問者が完全なカテゴリオブジェクト を持っていることを望みますが、これは私がJSONデータとして持っているものです: enter image description here

この問題を解決して、ビジターのカテゴリについてのすべての情報を取得するにはどうすればよいですか?使用JPQL

select v from Visitor v left join fetch v.category 

+0

を使用しようとする必要があります場合。訪問者がcategory_idのような外部キーを持っているなら、それを@JoinColumnとして置くことができ、あなたは完全なカテゴリを得るでしょう –

答えて

0

あなたは重複がビジターでの外部キーがないように見える返さJSONからdistinct

select distinct v from Visitor v left join fetch v.category