hibernate 查询表中某几个字段:
如,表emp中有如下的字段
Name Type Nullable Default Comments
-------- ------------ -------- ------- -------
EMPNO NUMBER(4)
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
现在只需要查出其中的3个字段:EMPNO、ENAME、COMM
由于已经有一个实体类 EmpEntity 对应了表 emp,且类EmpEntity 中的属性都对应了表emp中的所有字段。
所以,要查询其中的3个字段,需要新建一个实体类 Employees,但是不需要配置 *.hbm.xml 关联文件。
代码如下:
实体类:Employees.java
public class Employees extends BaseEntity {
/**
* @Fields serialVersionUID :
*/
private static final long serialVersionUID = 3106850299455862020L;
private BigDecimal empNO;
private String empName;
private BigDecimal comm;
/**
* <p>Title: toString</p>
* <p>Description: 重写 toString() 方法</p>
* @return
* @see java.lang.Object#toString()
* @author
*/
@Override
public String toString() {
StringBuffer buf = new StringBuffer("");
buf.append("[EmpEntity:empNO=").append(empNO)
.append("\n")
.append("empName=").append(empName)
.append("\n")
.append("comm=").append(comm)
.append("]");
return buf.toString();
}
//下面省略 setter()/getter()
}
测试类:(使用junit 4.0)
@Test
public void findEmps() {
String hql = "select EMPNO,ENAME,COMM from emp";
Session session = HibernateUtil.currentSession();
Query query = session.createSQLQuery(hql);
List list = query.list();
List<Employees> el = setList(list);
if (null != el) {
System.out.println("size=" + el.size());
Employees emp = null;
System.out.println("EMPNO\tENAME\tCOMM");
try {
for (int i = 0; i < el.size(); i++) {
emp = el.get(i);
System.out.println(emp.getEmpNO() + "\t" + emp.getEmpName()
+ "\t" + emp.getComm());
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
System.out.println("null");
}
HibernateUtil.closeSession();
}
private List<Employees> setList(List list) {
List<Employees> empList = new ArrayList<Employees>(10);
Employees emp = null;
try {
Object[] arr = null;
BigDecimal empNO = null;
String empName = null;
BigDecimal comm = null;
for (int i = 0; i < list.size(); i++) {
emp = new Employees();
arr = (Object[]) list.get(i);
empNO = (BigDecimal) arr[0];
empName = (String) arr[1];
comm = (BigDecimal) arr[2];
emp.setComm(comm);
emp.setEmpName(empName);
emp.setEmpNO(empNO);
empList.add(emp);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return empList;
}
测试结果:
size=14
EMPNO ENAME COMM
7369 SMITH null
7499 ALLEN 300
7521 WARD 500
7566 JONES null
7654 MARTIN 1400
7698 BLAKE null
7782 CLARK null
7788 SCOTT null
7839 KING null
7844 TURNER 0
7876 ADAMS null
7900 JAMES null
7902 FORD null
7934 MILLER null
分享到:
相关推荐
如果只需要查询结果中的一个或几个字段,可以像下面这样处理: ```java for (int i = 0; i (); i++) { Object[] o = (Object[]) list.get(i); System.out.println(o[0]); // 输出第一个字段的值 System.out....
本篇文章将探讨如何在Hibernate中进行多表查询,并从每个表中选取特定的字段。 一、Hibernate的多表查询基础 在Hibernate中,多表查询通常涉及到关联关系的映射,包括一对一(OneToOne)、一对多(OneToMany)、多...
ORM允许我们将数据库表结构映射到Java类,每个表对应一个类,表中的字段对应类的属性。这种映射是通过Hibernate的配置文件(如.hbm.xml)或者使用注解完成的。 对于不同的数据库字段类型,Hibernate提供了一系列的...
如果某条记录在另一个表中没有匹配,则不会显示这条记录。 2. **外连接(Outer Join)**: - **左外连接(Left Outer Join)**:除了返回两个表中满足连接条件的记录外,还会返回左表中不满足连接条件但右表中不...
总结来说,解决Hibernate中MySQL的中文排序问题需要关注以下几个方面: 1. 确保MySQL数据库和表使用支持中文的字符集,如GBK或UTF-8。 2. 在Hibernate配置中设置正确的字符集。 3. 使用`@OrderBy`注解或自定义比较...
第一范式(1NF)要求每个字段都具有原子性,即字段值不可再分;第二范式(2NF)要求非主键字段完全依赖于主键,消除部分函数依赖;第三范式(3NF)要求非主键字段之间不存在传递依赖。更高层次的范式,如BCNF...
本文将深入探讨 HQL 的几个关键方面,包括基本的查询语法、连接操作以及聚合函数等。 #### 基本查询语法 HQL 查询的基本语法与 SQL 非常相似,但又有所不同。以下是一些基本的 HQL 查询示例: 1. **简单查询**: ...
##### 检索类的某几个属性 如果只需要某些特定属性,可以通过如下方式指定: ```hql SELECT s.sname, s.sage FROM Student s; ``` 这条语句将返回所有学生的姓名和年龄。 ##### 指定别名 为了增强查询结果的...
### Hibernate 实现动态表查询的多种解决方案 #### 一、前言 在使用Hibernate进行数据库操作时,我们经常需要根据不同的需求对不同的表进行查询。特别是在处理多表、多库等复杂场景时,如何实现动态表查询就显得尤...
在Hibernate 3.2版本中,有以下几个核心知识点: 1. **对象关系映射(ORM)**:Hibernate的核心功能就是实现Java对象与数据库表之间的映射。通过XML配置文件或注解,我们可以定义对象属性与数据库字段的对应关系,...
然而,在使用Hibernate执行SQL查询时,如果查询的目标表中存在char类型的字段,Hibernate有时会将该字段的数据映射成一个字符,而非完整的字符串。这主要是由于Hibernate默认的映射机制所导致的,即对于char类型的...
如果数据库中确实没有这个字段,需要更新实体类或者删除不必要的映射。 2. **SQL语法错误**: 错误信息:`Column 'df' in where clause is ambiguous` 这个错误表示在SQL查询中的`df`字段无法明确它属于哪个表。...
在使用Hibernate进行数据库操作时,有几个关键概念值得深入理解: 1. 实体(Entity):在Hibernate中,实体对应数据库中的表,通过@Entity注解声明。 2. 映射(Mapping):实体和数据库表之间的关系通过XML或注解...
此外,开发者在使用Hibernate时还需要了解它的架构,Hibernate架构主要由以下几个核心组件构成: 1. SessionFactory:负责初始化Hibernate,管理Hibernate配置信息和映射信息。 2. Session:表示应用程序和数据库...
在连接了多个表的查询中,可能出现同样名字的字段,这时我们可以使用占位符来避免字段名重复的问题,例如: ```java List cats = sess.createSQLQuery("select {cat.*} from cats cat").addEntity("cat", Cat.class)...
压缩包中的源码可能包括以下几个部分: 1. `pom.xml`:Maven项目配置文件,包含依赖项,如Hibernate、Struts、JSP等。 2. `hibernate.cfg.xml`:Hibernate配置文件。 3. `Article.hbm.xml`:实体类的映射文件,或者...
在Hibernate中,主要涉及以下几个核心概念: 1. **实体(Entities)**:在Hibernate中,实体代表数据库中的表,是业务逻辑中的对象。通过注解或XML配置,我们可以将Java类与数据库表关联起来。 2. **Session**:...
标题中的“Spring+Hibernate 自动映射”是指在Java Web开发中,利用Spring框架与Hibernate ORM工具进行数据层的整合,实现对象关系映射(ORM)的自动化处理。这一技术结合了Spring的强大依赖注入(DI)和事务管理...
【描述】虽然描述部分为空,但通常这类实例会涵盖以下几个关键步骤: 1. **环境搭建**:首先,你需要在项目中引入Hibernate库,配置相应的pom.xml或build.gradle文件。此外,还需要设置Hibernate的配置文件...
FirstResult表示从结果集的第几个元素开始获取,MaxResults则限制返回的最大记录数。 二、使用Criteria API进行分页 1. 创建Criteria对象:`Criteria criteria = session.createCriteria(entityClass);` 2. 设置...