问题描述
我有两个表A和B,A和B中都有一个CardNum非主键字段,我想在查询A表时通过CardNum把B表中对应的记录读出来(CardNum在B表中是唯一的),但有可能A表中的CardNum在B表中不存在,所以没有外键约束,用SQL来实现就是SELECTa.*,b.*wherea.CardNum=b.CardNum.不知道使用Nhibernate如何关联这两个表,我期望的效果是可以A.B这样就能访问到A.cardnum对应的B记录。
解决方案
解决方案二:
路过,顺带顶顶,。
解决方案三:
A和B之间通过CardNum关联,他们是多对多的关系吗?
解决方案四:
多对一关系,cardnum在b表中是唯一的,但有可能a表中的 cardnum是b表中没有的非法值。
解决方案五:
selecta.*,b.*fromaleftjoinbona.CardNum=b.CardNum这样sql才对吧,直接调用sql不就行了
解决方案六:
fromAa,Bbwherea.CardNum=b.CardNum;
解决方案七:
该回复于2010-11-04 13:34:20被版主删除
解决方案八:
接5楼,返回结果是个List<Object[]>列表里的节点Object[0]就是你的A,Object[1]就是你的B,强制转化就oK了
解决方案九:
一个onetomany嘛。。在B表里面放一个List<A>,A里面放一个B的对象,然后在配置文件里面配置他们的关系就可以了。
解决方案十:
SQL语句是对的,你直接把这个语句写成Stringhql="SELECTa.*,b.*wherea.CardNum=b.CardNum.";List<Object[]>list=this.getSession.createQuery(hql).list();这样你查询出来的东西就存为了list。节点Object[0]就是你的A表的东西,Object[1]就是你的B表的东西,转换成你映射的类就可以了。
解决方案十一:
9楼的hql写错了
解决方案十二:
引用9楼zhu6100441的回复:
SQL语句是对的,你直接把这个语句写成Stringhql="SELECTa.*,b.*wherea.CardNum=b.CardNum.";List<Object[]>list=this.getSession.createQuery(hql).list();这样你查询出来的东西就存为了list。节点Object[0]就是你的A表的东西,Object[1]就是你的B表的……
。。。。写了几年sql,从没见过这样sql,对在哪里??????
解决方案十三:
lz的问题不是很懂捏如果把2个表之间设置了关联那么只要查询一个表那么另外的一个表中的所有数据难道还没查出来么?!?hql语句那不随便写啊.......
解决方案十四:
引用3楼felixz的回复:
多对一关系,cardnum在b表中是唯一的,但有可能a表中的 cardnum是b表中没有的非法值。
拿嘴说行就行啊??
解决方案十五:
sql查属性,hql查对象,貌似用连接查询ID都相等了怎么还可能没有cardnum,什么个情况!!