这是我从数据库中获取用户bean的方法。
session.createCriteria(User.class).list();
这将从数据库返回所有用户记录。有趣的是,我不想从数据库获取密码字段。只想在检索时排除该字段。
我有选择
1)在其他领域使用投影。这需要更多代码才能添加到投影列表中。所以放弃了这个想法。
2)使用Sql,我需要编写一个手动查询,这会杀死Hibernate的主题。
是否有可能排除Bean的列值?
假设以下是您的POJO:
User.java
private long id; private String fName; private String lName; // getter - setter of all fields
现在假设您只想获取id&fName字段,而不要获取lName。
id
fName
lName
除了您描述的两种方法之外,还有第三种方法可以使用HQL来实现。
Query q1 = session.createQuery("Select new User(id, fName) from User"); List<User> users = q1.list();
修改 User.java 以使其具有另一个构造函数,如下所示:
public User(long id, String fName) { this.id = id; this.fName = fName; }
简而言之,无论您要检索什么字段,都可以在构造函数和查询中列出它们。
希望这可以帮助。