hibernate中如何实现两个无关系表的左联的问题

前两天作项目的时候发现的这个问题,先容我详细描述一下问题所在!
现有应用表:A(ACD,CD)
MASTER表:B(BCD,BNM);C(CCD,CNM)
需求是这样的:当A表中的ACD>1000时,用CD到B表查询BNM,反之到C表查询CNM。
所以,在A的mapping里不能设置A表与B或C表的关系。
问题就在这里,在hibernate里无关联的表用hql语句只能实现内联,无法实现左联。
我看了好多论坛都没有很好的解决方法,大多数高手都叫嚷这是DB设计的问题,要求重新设计表结构,从而修改mapping,但我觉得这样的需求很容易发生。而目前来说,我只能将一个hql分成两个写。
真不知道,有没有更好的办法来解决这个问题,让我们拭目以待吧。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在 MySQL 需要对多个进行左联操作,并创建一个新,可以考虑以下几个方法来加快速度: 1. 使用索引 在左联操作,如果关联的列没有索引,那么 MySQL 会进行全扫描,导致查询速度变慢。因此,为关联列添加索引可以大大提高查询速度。可以使用以下命令为添加索引: ``` ALTER TABLE table_name ADD INDEX index_name(column_name); ``` 其,table_name 是名,index_name 是索引名,column_name 是要添加索引的列名。 2. 优化查询语句 在执行左联操作时,可以优化查询语句,减少查询数据量。可以只查询需要的列,而不是全部列;可以添加限制条件,减少查询行数;可以使用子查询等方式减少查询数据量。 3. 分批处理 如果要处理的数据过大,可以将数据分批处理,每次处理一部分数据,最后再将结果合并。可以使用 LIMIT 和 OFFSET 限制查询行数,例如: ``` SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id LIMIT 1000 OFFSET 0; ``` 这个语句会查询 table1 和 table2 的前 1000 行数据,并进行左联操作。之后可以使用 OFFSET 1000 查询下一批数据。 4. 使用临时 如果要处理的数据比较复杂,可以使用临时来处理数据。可以将需要左联按照某个条件分组,分别查询后将结果存储到临时,最后再对临时进行左联操作。 以上是一些常用的加快 MySQL 左联操作速度的方法,可以根据实际情况选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值