UserFullTest有一个associatedTestContentElementResponses的集合
每个TestContentElementResponse依次拥有associatedResponseAttributes的集合
我想在一次获取中提取所有数据。
这是我的代码:
Session session = this.sessionFactory.getCurrentSession();
Criteria c=session.createCriteria(UserFullTest.class);
c.createAlias("associatedTestContentElementResponses", "tcer");
c.setFetchMode("tcer", FetchMode.JOIN);
c.add(Restrictions.idEq(uftId));
Criteria cra=c.createCriteria("tcer.associatedResponseAttributes");
cra.createAlias("tcer.associatedResponseAttributes", "ra");
cra.setFetchMode("ra", FetchMode.JOIN);
List<UserFullTest> uftList = c.list();
我得到以下例外:
org.hibernate.QueryException:重复的关联路径:associatedTestContentElementResponses.associatedResponseAttributes
任何提示都会非常感激
我应该解释一下...... 如果我没有指定subCriteria FetchMode,则它使用Select模式。因此,我试图通过包含子标准来获取所有内容。我知道数据拉的确切大小,所以我知道单个提取是最好的做法
答案 0 :(得分:0)
您创建条件的方式需要更改如下。
Session session = this.sessionFactory.getCurrentSession();
Criteria c=session.createCriteria(UserFullTest.class).createCriteria("tcer.associatedResponseAttributes");
c.createAlias("associatedTestContentElementResponses", "tcer");
c.setFetchMode("tcer", FetchMode.JOIN);
c.add(Restrictions.idEq(uftId));
c.createAlias("tcer.associatedResponseAttributes", "ra");
c.setFetchMode("ra", FetchMode.JOIN);
List<UserFullTest> uftList = c.list();