这是我的商业模式。
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 。我不确定从这里要去哪里。