hibernate映射:hibernate annoation (十 映射查询)

  在类级别上配置:

  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") 
 } 
  
)


  还可以通过hs属性设置查询属性:

  例如:设置超时

  Java代码   

@NamedQuery(name="query2",query="select c from A c where c.id=?",hs=@QueryH(name = "timeout", value = "20")

  属性介绍说明:

cacheable 是否可以和 2级缓存Cache交互(默认false)
cacheRegion 设置缓存Cache名称(默认othewise)
timeout 查询超时设定
fetchSice 所获取结果集大小
flushMode 本次查询所用刷新模式
cacheMode 本次查询所用缓存Cache模式
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. 
)})}) 
public  B{} 


  测试:

  Java代码  

Query q = session.getNamedQuery("nativesql1");

  可使用@EntityResultfields属性来检索固定字段:

  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.,fields={ 
 @FieldResult(name="bname",column="bname") 
})})}) 
public  B{}


  测试:

  Java代码   

Query q = session.getNamedQuery("nativesql1"); 
List<B> list = q.list; 
for (Iterator iterator = list.iterator; iterator.hasNext;) { 
  B a2 = (B) iterator.next; 
  .out.prln(a2.getBname); 
  
 }


  此时如果要显示:.out.prln(a2.getId);则会报: could not execute query ---Column 'id1_0_' not found.异常

Tags:  hibernate自动映射 hibernate继承映射 hibernate映射文件 hibernate映射

延伸阅读

最新评论

发表评论