用抽象类来Hibernate多次获取

时间:2015-07-23 10:03:33

标签: java hibernate jpa hql

您好我有以下课程:

public class OrderTemplate {

    <other fields>

    @OneToMany(mappedBy = "orderTemplate", cascade = CascadeType.ALL)
    @Column(name="order_template_input")
    private Set<OrderTemplateInput> orderTemplateInputs;

}

现在我有这样的抽象类orderTemplateInput:

public abstract class OrderTemplateInput {

    <other fields>
    @Column(name="text", nullable = false)
    protected String text;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "order_template_id")
    @JsonIgnore
    protected OrderTemplate orderTemplate;

}

两个课程扩展了这一个:

public class OrderTemplateTextInput extends OrderTemplateInput {

    @JsonProperty(value="type")
    public OrderTemplateInputType getType() {
        return OrderTemplateInputType.TEXT;
    }
}

这一个:

public class OrderTemplateSelectInput extends OrderTemplateInput {

    @OneToMany(mappedBy = "orderTemplateSelectInput", cascade = CascadeType.ALL)
    private Set<InputValue> inputValues;

    @JsonProperty(value="type")
    public OrderTemplateInputType getType() {
        return OrderTemplateInputType.SELECT;
    }
}

首先,我想避免使用fetchType.Eager。所以我想通过关联集合获取所有orderTemplate。我有以下hql查询:

@Query("SELECT distinct o FROM OrderTemplate o JOIN FETCH o.orderTemplateInputs JOIN FETCH o.orderTemplateInputs oIn JOIN FETCH oIn.inputValues")

当OrderTemplate只有OrderTemplateTextInput的集合时,它只在一种情况下不起作用。在OrderTemplate列表中,只有OrderTemplate与OrderTemplateSelectInput以及select和text。如何查询以获取所有关联集合?

0 个答案:

没有答案