hibernate查询表的一部分属性

hibernate查询表的部分属性

由于一个表中含有比较占内存的字段,当查询的结果比较大时,可能会造成内存泄漏,所以想在查询的时候不加载那个字段,具体类如下:

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.search.annotations.DocumentId;

/**
 * 网上记账实体类
 * @since 2011-3-4 
 * @author 
 * @comment
 */
@Entity
@Table(name = "TOOLACCOUNT")
@org.hibernate.annotations.Entity(dynamicUpdate = true, dynamicInsert = true)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class ToolAccount implements Serializable {
	private static final long serialVersionUID = 1L;

	/** 主键 * */
	@Id
	@Column(name = "TOOLACCOUNTPK", length = 19)
	@GeneratedValue(generator = "custom-id")
	@GenericGenerator(name = "custom-id", strategy = "lab24.util.TableKeyGenerator", parameters = {
			@Parameter(name = "table", value = "KEYGENERATOR_TABLE"),
			@Parameter(name = "pkColumnName", value = "G_KEY"),
			@Parameter(name = "pkColumnValue", value = "TOOLACCOUNT_PK"),
			@Parameter(name = "valueColumnName", value = "G_VALUE"),
			@Parameter(name = "allocationSize", value = "1") })
	@DocumentId
	private long toolAccountPK;

	private String title;//名称
	private Date createDate;//创建日期
	private double money ;//金额
	private String content;//内容
	private int inOrOut;//收入还是支出             0:收入            1:支出
	private String inOrOutType;//收入与支出的明线条目
	
	/** 关联用户 * */
	@ManyToOne(optional = false)
	@JoinColumn(name = "USERPK", nullable = false)
	private User user;
	
	
	public double getMoney() {
		return money;
	}
	public void setMoney(double money) {
		this.money = money;
	}
	public int getInOrOut() {
		return inOrOut;
	}
	public void setInOrOut(int inOrOut) {
		this.inOrOut = inOrOut;
	}
	public String getInOrOutType() {
		return inOrOutType;
	}
	public void setInOrOutType(String inOrOutType) {
		this.inOrOutType = inOrOutType;
	}
	public long getToolAccountPK() {
		return toolAccountPK;
	}
	public void setToolAccountPK(long toolAccountPK) {
		this.toolAccountPK = toolAccountPK;
	}
	public Date getCreateDate() {
		return createDate;
	}
	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
}
 这里的content是比较大的信息的字段,而作统计账单信息时,它是用不上的,所以想查询的时候不要这个字段,这在hibernate 也是可以做到的,这里是使用一个新的类来存放查询的结果,因为hibernate是以封装好的对象返回来的,所以这里要新建一个对象,这个和