【问题标题】:JPA Hibernate OneToMany FetchingJPA Hibernate OneToMany 获取
【发布时间】:2016-05-24 14:45:57
【问题描述】:

我已经编写了 Category 和 Visitor Entities 之间的简单关系 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;
}

}

没关系,但是现在当我想获取我的访问者时,我希望每个访问者都有一个完整的类别对象, 但这就是我所拥有的 JSON 数据:

如何解决此问题以获取有关访问者类别的所有信息??

【问题讨论】:

  • 从返回的 JSON 来看,Visitor 中似乎没有外键。如果访问者有任何像 category_id 这样的外键,你可以把它写成@JoinColumn,你会得到完整的类别

标签: hibernate jpa one-to-many fetch


【解决方案1】:

使用JPQL

select v from Visitor v left join fetch v.category

如果您有重复,请尝试使用distinct

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多