在JPQL查询中(或使用FetchType)隐藏User中的密码字段

时间:2012-09-30 15:11:02

标签: jpa persistence jpql openjpa

我有一个像这样的实体:

public class User {
    @Column(name = "password")
    @Element(name = "pass", data = true)
    private String password;
}

我想要的是默认情况下不会在查询中读取/填充字段密码。但在某些情况下,我当然希望检查PWD,在这种特殊情况下,应该在User对象中通过openJPA读取和填充PWD。

我可以使用哪种Fetch策略或JPQL查询来实现此目的? 我认为FetchType.Lazy仅适用于连接表而不是单个字段。 此外,我无法想象一个JPQL查询,我可以告诉openJPA覆盖此FetchType并加载此字段,以防我确实需要它进行PWD检查。

非常感谢! 塞巴斯蒂安

1 个答案:

答案 0 :(得分:3)

实际上,可以将单个字段设置为延迟加载。只需使用延迟提取策略添加@Basic注释,如下所示:

public class User {
    @Basic(fetch = FetchType.LAZY)
    @Column(name = "password")
    @Element(name = "pass", data = true)
    private String password;
}

此处提供了更多详细信息:http://openjpa.apache.org/builds/1.1.0/docs/jpa_overview_meta_field.html#jpa_overview_meta_fetch