我想忽略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)
如何避免这种情况?或者我的关系有什么问题?
请帮帮我。。!
当您将一个load
与charge.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, 对于内部查询填充结果集并传递给主查询, 但如何将这个子查询传递给主查询还不清楚。
subcompany.hbm.xml 子单位表 branch.java 指定表 我需要帮助编写条件查询使用提供的SQL。
问题内容: 我必须根据可以为空的值选择相应的列以进行联接。详细地: 如果shoporders.InvoiceAddressId为null,那么我必须使用shoporders.DeliveryAddressId 有什么线索吗? 提前致谢 问题答案:
我想使用Hibernate条件语言编写此查询。我对Hibernate很陌生,无法将此查询转换为条件形式。我参考了很多关于 SO 的答案,但就我而言,我在不同的列上使用内部连接而不是主键/外键列。我提到了这个,但仍然不能正确。