hibernate annoation (十 映射查询)
2009-09-18 00:00:00 来源:WEB开发网在类级别上配置:
Java代码
@Entity
@NamedQueries(value = { @NamedQuery(name="query1",query="select a from A a") })
此查询是sessionfactory级别的也就是在创建sessionfactory时候已经处于内存中了
可以在任何地方使用。
调用:
Java代码
Query q = session.getNamedQuery("query1");
可同时配置多个
Java代码
@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属性设置查询属性:
例如:设置超时
Java代码
@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
例如:
Java代码
@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{}
测试:
Java代码
Query q = session.getNamedQuery("nativesql1");
可使用@EntityResult的fields属性来检索固定字段:
Java代码
@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{}
测试:
Java代码
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 多对多关系详解(包括中间表,一对多字表...
- ››Hibernate实现mysql数据库limit查询方法
- ››Hibernate 之父:是时候升级到Java EE 6了
- ››Hibernate查询
- ››Hibernate和iBATIS比较(摘自网络)
- ››Hibernate使用Projections进行聚合操作
- ››hibernate中java.util.Date类型映射
- ››hibernate中update与saveOrUpdate的区别
- ››Hibernate各种映射关系总结
- ››Hibernate过滤器使用窍门
- ››Hibernate属性查询简单讲述
更多精彩
赞助商链接