JPA:映射连接值()路径示例,
@Entity
public class Book {
@OneToMany
@MapKey
Map<Long, Chapter> chapters;
}
@Entity
public class Chapter {
@Id Long id;
String name;
}
CriteriaQuery criteriaQuery = criteriaBuilder.createCriteriaQuery(Book.class);
Root root = criteriaQuery.from(Book.class);
MapJoin<Book, Long, Chapter> chapters = (MapJoin)root.join("chapters");
Path chapterName = chapters.get("name")
// or
Path chapterName = chapters.value().get("name");
最后两行有什么区别? Map join是地图值类型的连接,为什么需要value()?
答案 0 :(得分:-1)
我认为您的代码无法编译。 无论如何 - 因为章节的连接给了MapJoin。 地图总是由一个键和一个值组成。
因此,如果您想访问该值(例如章节),则必须调用value()。
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Book.class);
Root root = criteriaQuery.from(Book.class);
MapJoin join = root.join(Book_.chapters);
Path path = join.value().get(Chapter_.name);