这是对复杂查询的简化。
我想检索一个具体的新事件的详细信息(具有已知的传递 idNew)。
问题是我不知道如何告诉休眠 sql 引擎我想检索该记录的字段,这与新文件是否有关联文件无关。
我不知道如何用最后一个子句(和 newsWfLocalFiles.idNewsWfLocal = newsWfLocal.idNewsWfLocal)编写 conexion
Query query = this.sessionFactory.getCurrentSession().createQuery(
"select news.idNews, newsWfLocal.title, newsWf.date, newsWfLocalFiles.url" +
" from News news, NewsWf newsWf, NewsWfLocal newsWfLocal, NewsWfLocalFiles newsWfLocalFiles" +
" where news.idNews = :idNews" +
" and newsWf.news.idNews = news.idNews" +
" and newsWf.idNewsWf = newsWfLocal.idNewsWf" +
" and newsWfLocal.idLocal = 1" +
" and newsWfLocalFiles.idNewsWfLocal = newsWfLocal.idNewsWfLocal");
我想关键是正确地构建表单句子,但我不知道该怎么做。
这些是表之间的关系:
新闻一对多 NewsWf
新闻Wf 一对多 新闻WfLocal
新闻WfLocal 一对一新闻WfLocalFiles
使用下一个表单子句,我觉得我接近解决方案,但检索到的“localFile”仍然为空,尽管在该字段不为空的情况下:
from News news join news.newsWfs newsWfs join newsWfs.newsWfsLocal newsWfsLocal left outer join newsWfsLocal.newsWfLocalFiles newsWfLocalFiles
这里是一对一映射的详细信息:
在NewsWfLocal.xml中:
<one-to-one name="newsWfLocalFiles" class="com.sample.mdl.NewsWfLocalFiles" fetch="select" lazy="false" ></one-to-one>
在NewsWfLocalFiles.xml中:
<one-to-one name="newsWfLocal" class="com.sample.mdl.NewsWfLocal" fetch="select" lazy="false"></one-to-one>