由于一个表中含有比较占内存的字段,当查询的结果比较大时,可能会造成内存泄漏,所以想在查询的时候不加载那个字段,具体类如下:
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是以封装好的对象返回来的,所以这里要新建一个对象,这个和
分享到:
相关推荐
以上就是使用Hibernate查询数据表中部分字段的方法。在实际应用中,根据项目需求和性能考虑,可以选择合适的方式进行查询。同时,要注意优化查询,避免全表扫描,减少对数据库的压力。学习和熟练掌握这些技术,将有...
另一种方法是改用原生的SQL查询,利用Hibernate的`Session.createSQLQuery()`方法来执行,但这可能意味着失去了部分ORM(对象关系映射)的便利性。 然而,如果你坚持使用HQL并且不想采用上述替代方案,你可能会需要...
根据提供的标题、描述以及部分代码内容,我们可以了解到这段材料主要涉及的是Hibernate框架中的HQL(Hibernate Query Language)查询语言的使用。接下来将详细介绍HQL的相关知识点。 ### HQL概述 HQL是Hibernate...
HQL是Hibernate的SQL方言,它是面向对象的查询语言,允许我们用类和对象的名字而不是表和列来写查询语句。HQL支持各种复杂的查询,如连接查询、分组查询、子查询等。例如,我们可以用以下HQL语句查询所有未删除的...
`<key>` 标签指定了关联的外键,`<composite-element>` 标签则用于映射 `Address` 类的属性到对应的表列。 延迟加载的工作原理基于代理模式。Hibernate 会创建一个代理对象,代替实际的集合对象。当尝试访问集合...
描述部分虽然为空,但通常情况下,多态查询可能涉及到的概念包括:继承、多态性、动态类型、实体类、继承层次结构的映射、集合的多态处理等。根据给出的博客链接,我们可以推测该博客可能详细讲解了这些概念在...
本篇文章将深入探讨在Hibernate3中如何通过Native SQL查询部分字段,并将其映射到具体的Java对象上。这种方式在处理一些特定的、效率较高的SQL查询时非常有用。 首先,我们需要理解Hibernate中的`SQLQuery`接口,这...
它允许开发者以类和属性的方式表达查询,极大地提高了代码的可读性和可维护性。HQL支持各种操作,如选择、投影、连接、分组、排序等,还可以进行复杂的条件查询和子查询。例如,以下是一个简单的HQL查询示例,用于...
【hibernate动态分表】是一种数据库设计策略,主要用于处理大数据量的问题,通过将数据分散到多个物理表中,以实现水平扩展,提高查询效率,减轻单表的压力。在Java Web开发中,Hibernate作为一款流行的ORM(对象...
11. Hibernate查询语言:Hibernate Query Language(HQL)是用于操作持久化数据的一种面向对象的查询语言,这部分将介绍HQL的基本语法和高级特性。 12. 条件查询:条件查询是数据库操作中常见的需求,文档会讲解...
`hibernate-mapping`是Hibernate配置文件中的一部分,用于定义Java对象与数据库表之间的映射关系。 1. `default-access`:这个参数定义了Hibernate如何访问对象的属性。默认值是`property`,意味着Hibernate将使用...
大多数情况下,你需要指定一个别名,原因是你可能需要在查询语句的其它部分引用到 Cat。例如:from Cat as cat,这个语句把别名 cat 指定给类 Cat 的实例,这样我们就可以在随后的查询中使用此别名了。 关键字 as ...
在Hibernate中,查询是非常关键的部分,它提供了HQL(Hibernate Query Language)来实现对数据库的检索。本文将重点讨论HQL在处理多对多关系映射以及多表查询中的应用。 在Hibernate中,多对多关系通过`...
- **读取(Read)**:通过`Session`的`get()`或`load()`方法获取特定ID的对象,或者使用`createQuery()`或`createSQLQuery()`执行HQL(Hibernate查询语言)或SQL来查询数据。 - **更新(Update)**:调用`Session`...
HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但操作的是对象而不是表。例如,`from+对象名`的查询语句可以获取所有对象实例。HQL语句中的类名应与JavaBean的类名一致。 4. **MyEclipse集成Hibernate**: ...
- `hibernate.connection.driver_class`: 这个属性指定用于连接数据库的JDBC驱动类。例如,对于MySQL,它通常是`com.mysql.jdbc.Driver`。 - `hibernate.connection.url`: 数据库的连接URL,其中包含了数据库...
总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...
这将帮助你理解Hibernate的工作原理,例如怎样执行HQL(Hibernate查询语言)或SQL查询,以及事务管理和缓存机制。 通过深入学习和实践这个入门案例,你将能够熟练掌握Hibernate的基本操作,为进一步学习更复杂的...