在类级别上配置:
@Entity
@NamedQueries(value = { @NamedQuery(name="query1",query="select a from A a") })
此查询是sessionfactory级别的也就是在创建sessionfactory时候已经处于内存中了
可以在任何地方使用。
调用:
Query q = session.getNamedQuery("query1");
可同时配置多个
@Entity
@NamedQueries(
value = {
@NamedQuery(name="query1",query="select c from A c where c.id=:id") ,
@NamedQuery(name="query2",query="select c from C c where c.id=:id")
}
)
还可以通过hints属性设置查询属性:
例如:设置超时
@NamedQuery(name="query2",query="select c from A c where c.id=?",hints=@QueryHint(name = "timeout", value = "20")
属性说明:
cacheable |
是否可以与二级缓存交互(默认false) |
cacheRegion |
设置缓存名称(默认othewise) |
timeout |
查询超时设定 |
fetchSice |
所获取的结果集大小 |
flushMode |
本次查询所用的刷新模式 |
cacheMode |
本次查询所用的缓存模式 |
readOnly |
是否将本次查询所加载的实体设为只读(默认false) |
comment |
将查询注释下如所生成的sql |
映射本地化查询(普通sql查询):
使用:@NamedNativeQueries和@SqlResultSetMappings
例如:
@Entity
@NamedNativeQueries(value={@NamedNativeQuery(name="nativesql1", query="select * from b where id>1",resultSetMapping="sql1maping")})
@SqlResultSetMappings(value={@SqlResultSetMapping(name="sql1maping",entities={@EntityResult(entityClass=B.class
)})})
public class B{}
测试:
Query q = session.getNamedQuery("nativesql1");
可使用@EntityResult的fields属性来检索固定字段:
@Entity
@NamedNativeQueries(value={@NamedNativeQuery(name="nativesql1", query="select bname from b where id>1",resultSetMapping="sql1maping")})
@SqlResultSetMappings(value={@SqlResultSetMapping(name="sql1maping",entities={@EntityResult(entityClass=B.class,fields={
@FieldResult(name="bname",column="bname")
})})})
public class B{}
测试:
Query q = session.getNamedQuery("nativesql1");
List<B> list = q.list();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
B a2 = (B) iterator.next();
System.out.println(a2.getBname());
}
此时如果要显示:System.out.println(a2.getId());则会报: could not execute query ---Column 'id1_0_' not found.异常
分享到:
相关推荐
**hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...
而在Java持久化框架Hibernate中,这些数据类型需要与数据库中的字段类型进行映射,以便正确地存储和检索数据。这篇博客主要探讨了Java数据类型如何与Hibernate的类型映射进行对应。 首先,Java的基本数据类型在...
在Java的持久化框架Hibernate中,数组映射是一种常见的数据模型转换方式,它允许我们将数据库中的数据以数组的形式存储在Java对象中。本篇将详细探讨`hibernate array 数组映射`的相关知识点,包括其原理、配置、...
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
Hibernate对象关系映射一对多 很基础等文档
便于同学们更好的学习hibernate,其中包含了hibernate的七种映射管、关系
在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象模型中的集合类,如List、Set、Map等。这允许我们在Java代码中操作对象集合,而Hibernate负责处理底层的SQL查询和数据存储。本文将深入探讨`...
本实践项目“Hibernate查询映射试验”旨在通过一系列示例帮助开发者掌握Hibernate中的查询映射技术,包括HQL(Hibernate Query Language)和Criteria API。 首先,Hibernate的核心是对象关系映射(ORM),它允许...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,消除了直接编写 SQL 的需要。在 Hibernate 中,映射关系是将数据库表与 Java 类之间的关联方式,使得对象模型可以与关系...
复合主键映射 <br>通常将复合主键相关属性,单独抽取出来,建立一个独立的类 * 必须实现序列化接口 * 必须实现equals和hashcode方法 采用标签进行映射,其它属性采用正常映射
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。在大型项目中,由于业务需求复杂,我们常常会使用到类的继承来组织代码结构,而Hibernate提供了对...
关于Hibernate的基本数据类型与Java中基本数据类型的映射关系
标题中的“Spring+Hibernate 自动映射”是指在Java Web开发中,利用Spring框架与Hibernate ORM工具进行数据层的整合,实现对象关系映射(ORM)的自动化处理。这一技术结合了Spring的强大依赖注入(DI)和事务管理...
在Java的持久化框架Hibernate中,容器映射技术是一种用于管理对象关系的机制,它使得对象之间的关联可以方便地在数据库中表示。本篇笔记主要探讨了如何使用Hibernate进行容器映射,特别是针对集合类型的映射,如List...
标题中的“hibernate bag 集合映射”指的是Hibernate框架中的一种关系映射机制。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者将数据库表与Java类进行映射,使得在处理数据库操作时可以使用面向...
Hibernate_配置映射文件详解
在Java持久化框架Hibernate中,容器映射技术是将Java集合类(如Set、Map、List等)与数据库中的关联关系进行映射的一种方法。这种技术使得对象之间的复杂关系能够被有效地存储和检索,增强了数据操作的灵活性。下面...
Hibernate 注解映射 Hibernate 注解映射是 Hibernate 框架中的一种映射方式,它使用 Java 注解来描述实体类和数据库表之间的映射关系,提高开发效率。 一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,...
在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本资源“Hibernate实体映射”提供了一个深入理解这一关键概念的机会,通过...