0
無效的SQL查詢這是SQL查詢,我需要Hibernate的建立(在我的SQL客戶端工具執行運行非常快):Hibernate會從HQL
select decision.decisionid from Decision decision
INNER JOIN Proceeding proceeding on decision.proceedingId=proceeding.proceedingId
INNER JOIN IPRIGHT_PROCEEDING ipright on proceeding.proceedingId=ipright.proceedingId
where proceeding.dossierkindcode=7 and decision.creationdate>=TO_DATE('2017-04-22','YYYY-MM-DD') and decision.creationdate<=TO_DATE('2017-04-27','YYYY-MM-DD') or decision.updatedate>=TO_DATE('2017-04-22','YYYY-MM-DD') and decision.updatedate<=TO_DATE('2017-04-27','YYYY-MM-DD')
這是HQL代碼,我寫道:
@Query("select decision.decisionId FROM Decision decision, Proceeding proceeding, IprightProceeding iprightproceeding"
+ " INNER JOIN decision.proceeding"
+ " INNER JOIN iprightproceeding.proceeding"
+ " WHERE decision.proceeding.dossierKind = ?1"
+ " AND decision.creationDate>=?2"
+ " AND decision.creationDate<=?3"
+ " OR (decision.updatedate>=?2 AND decision.updatedate<=?3)"
這是生成的糟糕的查詢,需要花費很多時間甚至完全阻塞服務器。
Hibernate: select decision0_.decisionid as col_0_0_ from DECISION decision0_
inner join PROCEEDING proceeding3_ on decision0_.proceedingid=proceeding3_.proceedingid
cross join PROCEEDING proceeding1_
cross join IPRIGHT_PROCEEDING iprightpro2_
inner join PROCEEDING proceeding4_ on iprightpro2_.proceedingid=proceeding4_.proceedingid
where proceeding3_.dossierkindcode=? and decision0_.creationdate>=? and decision0_.creationdate<=? or decision0_.updatedate>=? and decision0_.updatedate<=?
正如你所看到的,它的活動連接兩次同一張表!
請問您能幫我嗎?
感謝
實際上是同一張表的3倍,而這正是你告訴它用你的HQL所做的 – veljkost