获取多个实体关联查询,封闭到对象
一、Hibernate Query查询部分属性
select new com.golf.back.dto.video.VideFavourDetailDto(v.id, v.thumb, v.videoName, v.videoUrl, v.orgUrl, v.orgUrlSmall, vc.catName, vc.parentId, v.summary, v.content, v.price,v.isFree, v.lookFront, vf.createTime) from VideoFavour vf,Video v ,VideoCat vc where vf.videoId=v.id and v.catId=vc.id
VideFavourDetailDto类添加相同参数类型及个数的实例化对象;
二、多表查询,返回多个实体
StringBuffer sql = new StringBuffer("select {vpl.*}, {v.*}, {vc.*} from zg_video_playlog vpl "); sql.append("left join zg_video v on vpl.video_id=v.id "); sql.append("left join zg_video_cat vc on vc.id=v.cat_id "); sql.append("group by vpl.video_id "); sql.append("order by vpl.id desc"); Query query = super.getSession().createSQLQuery(sql.toString()) .addEntity( "vpl" , VideoPlayLog.class ) .addEntity( "v" , Video.class ) .addEntity("vc", VideoCat.class); query.setFirstResult(startPos); query.setMaxResults(pageSize); List<Object[]> list = query.list(); List<VideFavourDetailDto> vdList = new ArrayList<VideFavourDetailDto>(); if(null!=list && list.size()>0){ VideFavourDetailDto dto = null; VideoPlayLog vpl = null; Video v = null; VideoCat vc = null; for(int i=0; i<list.size(); i++){ vpl = (VideoPlayLog)list.get(i)[0]; v = (Video)list.get(i)[1]; vc = (VideoCat)list.get(i)[2]; dto = new VideFavourDetailDto(vpl.getId(), v.getId(), v.getThumb(), v.getVideoName(), v.getVideoUrl(), v.getOrgUrl() , v.getOrgUrlSmall(), vc.getCatName(), vc.getParentId(), v.getSummary(), v.getContent(), v.getPrice(), v.getIsFree(), v.getLookFront(), vpl.getCreateTime(), vpl.getPlayTimes()); vdList.add(dto); } }
特别注意: 这块有些问题,明明应该返回Clazz的List的,但确返回包含Clazz和Student的Object的List, 使用场合:基于对象的查询,复杂查询
相关推荐
《Hibernate中的本地SQL查询SQLQuery》 在Java的持久化框架Hibernate中,有时我们需要使用原生的SQL查询来实现特定的数据库操作,这时就需要利用到SQLQuery接口。本篇文章将详细解析如何使用Hibernate的SQLQuery来...
SQLQuery query = session.createSQLQuery(hql); query.setParameter("offset", (para.getCurrentPage()-1)*para.getSizePage()); query.setParameter("pageSize", para.getSizePage()); List<Game> games = query....
首先,Hibernate支持使用HQL(Hibernate Query Language),这是一种面向对象的查询语言,类似于SQL。然而,有时我们仍需要直接使用SQL语句,以便利用其灵活性和效率。在Hibernate中,你可以通过`Session`对象的`...
在 Hibernate 中,使用 SQLQuery 可以执行 Native SQL 查询,控制查询的执行是通过 SQLQuery 接口进行的,通过执行 Session.createSQLQuery() 获取这个接口。下面将详细介绍如何使用这个 API 进行查询。 标量查询...
在某些情况下,开发者可能需要使用原生SQL查询来执行特定的数据库操作,这时就可以利用Hibernate的SQLQuery功能。本文将详细讲解如何使用Hibernate的SQLQuery进行本地SQL查询。 首先,创建SQLQuery实例是通过...
在上面的代码中,我们使用 `Session.createSQLQuery()` 方法创建了一个 `SQLQuery` 对象,然后使用 `addEntity()` 方法指定了查询结果的实体类型,最后使用 `list()` 方法执行查询并获取结果。 使用 ...
SQLQuery query = session.createSQLQuery(sql); ``` 如果查询返回的是单个对象,我们可以使用`addEntity()`方法指定结果应映射到的实体类: ```java query.addEntity(MyEntity.class); MyEntity result = ...
Hibernate提供`Session`接口的`createSQLQuery()`方法来创建一个`SQLQuery`对象,用于执行原生的SQL查询。例如,以下代码展示了如何通过Native SQL获取`guestbook`表的所有记录,并打印结果: ```java ...
sqlQuery.addEntity(YourEntityName.class); List<YourEntityName> allData = sqlQuery.list(); transaction.commit(); session.close(); ``` 在这里,你需要将`your_table_name`替换为实际的数据库表名,并...
首先,我们需要理解Hibernate中的`SQLQuery`接口,这是执行原生SQL查询的主要入口。通过`Session`对象的`createSQLQuery`方法,我们可以创建一个`SQLQuery`实例,然后设置SQL语句: ```java Session session = ...
List<UserInfo> list = query.createSqlQuery(sql).addEntity(UserInfo.class).list(); 2. 修改操作:使用 createSqlQuery 方法可以执行修改操作,例如: String sql = "update user_info set user_name = 'aaa'";...
Hibernate也允许使用原生SQL查询,通过`createSQLQuery()`方法创建`SQLQuery`对象,然后可以使用`addEntity()`或`setResultTransformer()`将结果转换为对象。 总的来说,Hibernate的查询语言提供了一套灵活且强大...
- `SQLQuery`对象:通过`Session.createSQLQuery()`方法创建,用于执行自定义SQL查询。 - 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,...
SQLQuery query = session.createSQLQuery("SELECT * FROM User"); List results = query.list(); ``` 这种方法可以自由地编写任何有效的SQL,但需要手动映射查询结果到Java对象。如果返回结果需要映射到实体类...
SQLQuery query = session.createSQLQuery(sql) .addEntity(User.class) .setParameter("startIndex", 0) // 起始位置 .setParameter("pageSize", 10); // 每页数量 List<User> users = query.list(); ``` 五、...
SQLQuery query = session.createSQLQuery(sql); query.addEntity(User.class); List<User> users = query.list(); ``` 原生SQL查询可以返回结果集、单个值或自定义的结果类型。但需要注意的是,这种方式可能会丢失...
一、简单的 SQLQuery 在最简单的情况下,我们可以使用 createSQLQuery 方法来执行一个简单的 SQL 查询,例如: ```java List cats = sess.createSQLQuery("select * from cats").addEntity(Cat.class).list(); ``` ...
SQLQuery query = session.createSQLQuery(sql).addEntity(YourResultEntity.class); query.setParameter(1, param1); query.setParameter(2, param2); List<YourResultEntity> result = query.list(); for ...
SQLQuery sq = session.createSQLQuery(sql); sq.addEntity(Student.class); List<Student> list = sq.list(); ``` 这段代码将执行指定的SQL查询,并将结果映射到`Student`实体。 6. Criteria API的其他方法 ...