Hibernate HQL语法及相关的外键关联

例如对于TUser类

1.实体查询

String hql = " from TUser";

执行这条语句会返回TUser以及TUser子类的纪录。

注: 如果 TUser 类具有外键, 查询会报错!

解决方法: select 别名。属性 from 类 as 别名。 没有别名。属性仍然报错!

hql = "from java.lang.Object"

会返回数据库中所有库表的纪录。

where 语句

hql = "from TUser as user where user.name='yyy'";

其中,as可以省略也一样

hql = "from TUser user where user.name='yyy'";

where子句中,我们可以通过比较运算符设定条件,如:=, <>, >, <, >=, <=, between, not between, in, not in, is, like等。

2.属性查询

List list = session.createQuery("select user.name, user.age from TUser as user").list();

还可以在HQL中动态构造对象实例的方法,将数据封装。

List list = session.createQuery("select new TUser(user.name, user.age) from TUser as user").list();
Iterator it = list.iterator();
while(it.hasNext() ) {
TUser user = (TUser)it.next();
System.out.println(user.getName());
}

但是要注意这里的TUser对象只是对name和age属性的封装,其他状态均未赋值,所以不能用它来进行更新操作。

也可以在HQL的Select子句中使用统计函数

"select count(*) ,min(user.age) from TUser as user"

也可以使用distinct关键字来删除重复纪录。

select distinct user.name from TUser as user;

时间: 2025-01-21 09:55:55

Hibernate HQL语法及相关的外键关联的相关文章

系统学习hibernate之六:一对一外键关联映射双向关联

hibernate一对一唯一外键关联映射(双向关联Person<---->IdCard) 一对一唯一外键关联双向,需要在另一端(idcard),添加<one-to-one>标签,指示hibernate如何加载 其关联对象,默认根据主键加载person,外键关联映射中,因为两个实体采用的是person的外键维护的关系, 所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射方式: <one-to-one name="person"

Java的Hibernate框架中的双向主键关联与双向外键关联_java

一.双向主键关联双向的主键关联其实是单向一对一主键关联的一种特殊情况,只不过要在关联对象的两端的映射文件中都要进行<one-to-one>的配置,另外还要在主映射的主键一端采用foreign外键关联属性. 这里同样使用Person和IdCard来讨论,一个人对应着一个唯一的身份证,而且一个身份证也唯一映射着一个人,所以这就产生了双向的关联关系,Person的主键同样也是IdCard的主键,分别是主键的同时也是外键,这种关联关系成为双向一对一映射,表现到关系模型中可如下图: 图中的两个表采用了主

系统学习hibernate之五:一对一外键关联

在hibernate中一对一外键关联跟多对一外键关联有很相似的地方, hibernate多对一外键关联先参考这个,然后只要是在*.hbm.xml里面加入以下代码: <many-to-one name="group" column="groupid" unique="true"/>, 就是加入unique="true"属性. 多对一外键关联中的*.hbm.xml里面加入以下代码:<many-to-one nam

在Hibernate框架中编写持久对象类实现外键关联的几点注意事项

关系数据库系统本身就比较复杂,加上Hibernate的O/R映射层,复杂度加重了,很容易出现问题,本人将最近遇到的问题和解决方法做一个总结,整理在下面的一系列文章中 正确理解Hibernate的聚合类型(collection)的使用 在Hibernate中正确实现关联关系中的级联操作(cascading) 在Hibernate框架中编写持久对象类实现外键关联的几点注意事项 本文是第三篇,讲解在one-to-many(一对多)关联关系中的对象类的几个关键方法的实现.主要是equals(),hash

Hibernate一对一单向外键关联(简单总结了5种方法)

比如一对夫妻,丈夫有id,name:妻子有id,name.增加一对一单向外键关联一般有以下几种方法: 1.在husband中增加一个外键,foreign key 2.在husband中增加字段wife_id,wife_id参照wife的id.以wife为主导,必须wife里有id才能参照 3.在wife中增加一个外键,foreign key 4.在wife中增加字段husband_id,husband_id参照husband的id.以hunsband为主导,必须hunsband里有id才能参照

【hibernate框架】关系映射之一对一单项外键关联(Annotation实现)

一对一单向外键关联(Annotation做法): 例子,假设一夫配一妻(Husband与Wife).两个实体类的例子: Husband.java: package cn.edu.hpu.one2one; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToOne; @Entity pu

【hibernate框架】一对一双向外键关联(Annotation实现)

一对一双向外键关联(Annotation方法): 一夫(Husband)一妻(Wife)的一对一双向外键关联 Husband和Wife实体类: package cn.edu.hpu.one2one; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import jav

【hibernate框架】关系映射之一对一单向外键关联(XML实现)

在XML里面如何单向关联: 学生证与学生卡是一对一的关系,在学生证那一方做关联 Student.java: package cn.edu.hpu.model; public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String g

sql-SQL相关(分区,更新外键,多个外键关联)

问题描述 SQL相关(分区,更新外键,多个外键关联) 1.分区函数:为什么分区一直报错"数据库中已经存在对象" 代码:use food go create partition function pf_eva_date(datetime) as range left for values(2012) 2.如何在表中更新外键,最好用可视化界面不要脚本(表已建好保存了) 3.如果美食表中,美食有多个,怎么关联这多个外键?