表:A aId aName bName ;表:B bId bName bParentName各三个字段,关系:A多,B一 表关系:aid,bid分别为主键 采用bName作为逻辑外键(本人认为:它可以不是引用表的主键,所以可根本就不是外关键,)
由于hibernate配置映射是主键去关联的做不了映射。而表结构不是这样 ,接下来的关联查询怎么写呀,hibernate的关联查询是基于配置映射的,写本地sql,受不了了写关联查询时比jdbc还麻烦
Hibernate原生SQL查询
最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询。参考网上的一些资料,做一些总结。
对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。该接口是Query接口的子接口。
执行SQL查询步骤如下:
1、获取Hibernate Session对象
2、编写SQL语句
3、通过Session的createSQLQuery方法创建查询对象
4、调用SQLQuery对象的addScalar()或addEntity()方法将选出的结果与标量值或实体进行关联,分别用于进行标量查询或实体查询
5、如果SQL语句包含参数,调用Query的setXxxx方法为参数赋值
6、调用Query的list方法返回查询的结果集
针对复杂业务SQL,hibernate能力不足,SQL不好优化和也无法分离