如何只将特定的子对象加载到映射占位符

时间:2016-05-11 12:07:13

标签: jpa inheritance mapping

我在项目中有以下对象映射。一个联系人可以有多个来自typeA和typeB的引号。

@Entity
@Table(name = "t_ind_contact")
public class Contact implements Serializable {

    @Id
    @Column(name = "id", unique = true)
    private Long id;

    @OneToMany
    private List<Quote> quotes;

}

抽象引用类。

@Entity
@Inheritance
@DiscriminatorColumn(name = "app_code")
@Table(name = "t_ind_quote")
public abstract class Quote implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "id")
    private long id;

    @OneToMany
    @JoinColumn(name = "contact_id")
    private Contact contact;

    @Column(name = "app_code", insertable = false, updatable = false)
    private int appCode;
}

TypeA引用类

@Entity
@DiscriminatorValue("1")
public class TypeAQuote implements Serializable {

    private static final long serialVersionUID = 1L;

}

TypeB引用类

@Entity
@DiscriminatorValue("2")
public class TypeBQuote implements Serializable {

    private static final long serialVersionUID = 1L;

}

此映射适用于所有操作。但是对于某些操作,我们只需要带有typeA引号的联系对象。截至目前,我们将在系统从数据库加载数据后过滤typeA引号。

有没有办法只使用typeA引号填充联系人对象?我的意思是即使生成的查询也只会加载typeA引号。

0 个答案:

没有答案