我试图做一个查询hql hibernate(版本3.5.3),查询包括几个不同的表(4表)之间的联接。这是查询:加入休眠HQL
SELECT (lot of stuff)
FROM InvestigationRule as ir
JOIN InvestigationFormula as if ON (ir.tb33InvestigationFormula=if.idInvestigationFormula)
JOIN InvestigationEvent as ie ON (ir.tb27InvestigationEvent=ie.idInvestigationEvent)
JOIN InvestigationSectionEvent as ise ON (ie.eventSection=ise.sectionEventsCod)
我在第一次遇见一个语法错误,有人可以帮我解决这个问题,THX。
PS:我知道,我可以加入即使不使用JOIN命令,这是原始查询:
SELECT (lot of stuff)
FROM InvestigationRule AS ir,
InvestigationEvent as ie,
InvestigationSectionEvent as ise,
InvestigationFormula as if
WHERE ir.dateValidityEnd is null
AND ir.tb27InvestigationEvent = ie.idInvestigationEvent
AND ir.tb33InvestigationFormula = if.idInvestigationFormula
AND ie.eventSection = ise.sectionEventsCod
但由于它在创建几个CROSS JOIN(S)我不能使用这种形式MySql数据库,这是不好的。
:
HQL模样。而且你所拥有的不是HQL。这是SQL – Jens
简言之,适当地建模你的实体,你不应该这样加入。无论如何,最新版本的Hibernate确实提供了这种任意加入,但除非必要,否则我不会推荐使用它。这只是破坏了使用ORM的整个想法,你应该组成一个适当的实体模型 –
向我们展示映射这些表的Hibernate实体。 – Dherik