JPA CriteriaBuilder获取懒惰的获取的实体的嵌套实体属性​​

时间:2019-03-29 19:34:50

标签: java hibernate jpa hibernate-criteria

这是我的商业模式。

Book {
  (fetchType=lazy, JoinColumn)
   Author {
    (JoinColumn)
     Nationality {
        (JoinColumn)
        Territory {

        }
    }
  } 
}

我需要从 bookId 中获取 Territory 的一些属性。 到目前为止,我可以从 bookId 沿着这条路线获得 Author

public Author getAuthorByBookId(final Long bookId) {
        final Session session = getHibernateSession();
        final CriteriaBuilder builder = session.getCriteriaBuilder();
        final CriteriaQuery<Author> query = builder.createQuery(Author.class);
        final Root<Book> root = query.from(Book.class);
        query.select(root.<Author> get("authorId")).where(builder.equal(root.get("id"), bookId));
        final Query<Author> q = session.createQuery(query);

        return q.uniqueResult();
    }

此后,我不确定如何深入了解并从 Territory 列中获取属性。

我尝试过:

final CriteriaQuery<Territory> t = builder.createQuery(Territory.class)

t.select(root.<Author>get("authorId").<Nationality>get("authorNationalityId").<Territory>get("territoryId"));

但是,这会引发 InvalidPathException 。我不确定从这里要去哪里。

0 个答案:

没有答案