当前位置: 首页 > 知识库问答 >
问题:

Hibernate条件-内部连接或条件

宗政和韵
2023-03-14

我想忽略createAlias中的默认连接限制。我有一段一刀切的关系。

我的问题是Hibernate为连接关系生成默认限制。

波约

注:费用表中没有诊断模板栏。

Charge.java

 @OneToOne(mappedBy = "charge")
 private DiagnosticTemplate diagnosticTemplate;

诊断emplate.java

@OneToOne
@JoinColumn(name = "charge")
@Exclude
private Charge charge;

查询

select 
  * 
from 
  charges c 
inner join diagnostic_template dt 
  on (dt.charge = c.id and dt.status=1) or (dt.status=0)

标准

Criteria criteria = getSession().createCriteria(Charge.class, "charge")
      .createAlias("charge.diagnosticTemplate", "diagnosticTemplate",
        JoinType.INNER_JOIN,
        Restrictions.or(
           Restriction.and(Restrictions.eqProperty("charge.id", 
                         "diagnosticTemplate.charge"), 
           Restrictions.eq("diagnosticTemplate.status",true)),
           Restrictions.eq("diagnosticTemplate.status",false)  ))

Hibernate查询

select 
  * 
from 
  charges c 
inner join diagnostic_template dt 
  on dt.charge = c.id and (dt.charge = c.id and dt.status=1) or (dt.status=0)

如何避免这种情况?或者我的关系有什么问题?

请帮帮我。。!

共有1个答案

丌官招
2023-03-14

当您将一个loadcharge.diagnosticTemboard连接时,这意味着Hibernate将尝试查找与此load链接的诊断模板。因此,生成的条件dt.charge=c.id确实有意义。

请记住,您已经使用外键定义了关系。所以,软关系,比如dt。Hibernate无法理解status=0

如果您仍然希望实现查询,可以考虑间接加入两个实例(不使用关联路径)。请参阅如何在实体关系不直接的情况下使用hibernate条件联接多个表?。

 类似资料:
  • 我正在使用Ingres 11.0 DB,不确定它是否在其他数据库引擎上具有相同的行为,但这里是它 它不会返回表1中的所有记录,但我使用的是左连接,它应该从T1返回aa记录,从t2只处理行,只返回1条记录 如果我将其中一个条件从where子句移动到join条件,它的开始将返回我所期望的结果 问题是为什么它不工作在哪里所有搜索条件在哪里子句,但工作时,我移动t2.id_number从哪里加入条件? 我

  • 我正在尝试使用条件连接多个表,但遇到了一些问题,请帮助我:我有一个sql查询,如: 这三个表:截止时间(has country)、国家、交易所(has country)是3个实体类。 我如何使用hibernate标准像这样加入,我下面的代码仍然不完整:

  • 我正在尝试将下面的嵌套查询转换为Hibernate Criteria,但无法做到。实际上,尝试对结果集中的行进行计数和求和。 有人有什么想法吗? 提前谢谢。 下面是为上述查询编写的标准, > 对于select main query, 对于内部查询填充结果集并传递给主查询, 但如何将这个子查询传递给主查询还不清楚。

  • 问题内容: 我必须根据可以为空的值选择相应的列以进行联接。详细地: 如果shoporders.InvoiceAddressId为null,那么我必须使用shoporders.DeliveryAddressId 有什么线索吗? 提前致谢 问题答案:

  • subcompany.hbm.xml 子单位表 branch.java 指定表 我需要帮助编写条件查询使用提供的SQL。

  • 我想使用Hibernate条件语言编写此查询。我对Hibernate很陌生,无法将此查询转换为条件形式。我参考了很多关于 SO 的答案,但就我而言,我在不同的列上使用内部连接而不是主键/外键列。我提到了这个,但仍然不能正确。