我必須對使用 Hibernate 5.0.9 和 Oracle 資料庫的遺留專案做一些改進。我注意到休眠正在生成這樣的查詢
select a.id, b.id
from a, b
where a.b_id = b.id( )
代替
select a.id, b.id
from a left join b on a.b_id = b.id
對于這樣的代碼
Criteria criteria = session.createCriteria(A.class, "a");
criteria.createAlias("a.b", "b", JoinType.LEFT_OUTER_JOIN);
criteria = criteria.setProjection(
Projections.projectionList()
.add(Projections.property("a.id"))
.add(Projections.property("b.id"))
);
criteria.list();
至少對我來說,“( )”讀起來很復雜。在其他具有相同 Hibernate 版本的專案中,“連接”是正常生成的。
這是休眠配置嗎?
uj5u.com熱心網友回復:
按照建議,在persistence.xml中添加方言資訊解決了這個問題。
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect" />
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/428677.html
上一篇:HibernateSearch:在ElasticSearch上映射IndexedEmbedded導致在映射中找不到[]的欄位
