hibernate hql语句 注意事项

现在有实体类 Student 和User 。

public class Student{

  private String id;

  private Sting classRoom;

  private User user;

@Id@GeneratedValue(generator = "paymentableGenerator")@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")@Column(name ="ID",nullable=false,length=36)public String getId(){   return this.id;}
@ManyToOne(fetch = FetchType.EAGER)@JoinColumn(name = "USER")@ForeignKey(name="null")public USER getUser() {   return user;}public void setUser(User user) {   this.user = user;}……

}

public class User{

  private String id;

  private String name;

  private String password;

  ……

}

如果 你不用select 直接 “from Student ”查找

hql语句 :“from Student where user=‘123456’”

那么where 后面 直接加 “where user=‘123456‘”  (123456是User表记录的id)。

如果你要用select “select classRoom…”查找

hql语句 :"select “select classRoom,user.name as user from Student where uder.id=‘123456‘"

那么where语句已经select中 的user已经是个对象了要加 .? (123456是User表记录的id)。

你用了 select 了,那你就别执着用hibernate的hql了 ,因为你得到的结果 也不再是实体类,获取结果也不能用 List<Studet>了,变成了List<Object[]>。。。

很难受 - - 还不如直接用sql查,获取结果也是List<Object[]>

原文地址:https://www.cnblogs.com/xlj227/p/8615945.html

时间: 2024-10-11 07:18:05

hibernate hql语句 注意事项的相关文章

hibernate -- HQL语句总结

hiberante 这个曾经火了一时的东西,现在项目用到了 被迫学习 from users会返回对象 select  id ,name from user 会返回数组. 我想返回 部分对象的内容 select user(id,name) from user; 直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段            String hql = "from Users";            Query query = session.createQuer

Hibernate HQL语句使用总结

1. 查询整个映射对象所有字段 //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段           String hql = "from Users";           Query query = session.createQuery(hql);                       List<Users> users = query.list();           for(Users user : users){          

hibernate hql语句 group by having 的坑

我期望获得这个列表 然而,使用hql只能获得第一条数据,后来我琢磨了一下,和group by有关系 应该改成 成功查询到 原文地址:https://www.cnblogs.com/jnhs/p/10099068.html

hibernate 之 HQL语句总结【转】

1. 查询整个映射对象所有字段 //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 String hql = "from Users"; Query query = session.createQuery(hql); List<Users> users = query.list(); for(Users user : users){ System.out.println(user.getName() + " : " + user.ge

hibernate中执行hql语句创建session需要的HibernateUtil类

import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static SessionFactory sessionFactory = null; static { try { Confi

Hibernate HQL查询语句总结

Hibernate HQL查询语句总结 1. 实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql="from User user ";List list=session.CreateQuery(hql).list();上面的代码执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回.这里需要注意的是,Hibernate的实体查询存在着对继承关系的判定,比如我们前面讨论映射实体继承关系中的E

Hibernate 中update hql语句

今天在MySQL中用hibernate测试update语句发现以下问题: update语句竟然不去作用: 表机构如下: create table student(sid int primary key , sname varchar(45) not null, ssex char(2) not null,sdept varchar(10) not null,sage int ,saddress varchar(45) ); update语句如下: String[] params = new St

Hibernate写hql语句与不写hql语句的区别?

写hql语句与不写hql语句的区别? 写hql语句:书写HQL语句,所有的查询与投影的设计均使用HQL语句完成. 不写hql语句:没有任何查询语句,所有的查询与投影的设计使用面向对象格式完成. 二者选用的时机: 不写hql语句,有时比较方便,在不考虑复杂的查询的情况下,可以使用,此方法把某些Hibernate的方法封装起来,不灵活. 写hql语句,复杂的业务逻辑,建议使用,灵活方便. 以下通过俩种方法的对比来着重介绍一下hibernate不写hql的一种简单用法. 写hql语句: 具有丰富的灵活

Hibernate 的HQL语句,初级

这里讲解简单的HQL语句,因为很多比较复杂的外查询,用一般的查询很难完成 所以这里需要使用HQL @Test public void selquery(){ System.out.printf("hello"); Configuration config = new Configuration(); SessionFactory sessionfactory = config.configure("hibernate.cfg.xml").buildSessionFa