JPA join:可以加入实体、可嵌入或基本类型。
@Entity
public class Book {
@Id String id;
@Embedded
Author author;
String name;
}
Root<Book> root = criteriaQuery.from(Book.class);
root.join("author", JoinType.LEFT);
// or
root.join("author", JoinType.INNER);
root.join("name", JoinType.INNER);
从 JPA API 开始,加入嵌入和基本类型是合法的,但 JoinType 是什么意思?对于内部连接属性"name",如果 book.name 为 null,则查询将返回空结果?可嵌入类型也一样?
我认为您误解了文档。
连接可以与OneToOne
、ManyToOne
、OneToMany
、ManyToMany
和ElementCollection
映射一起使用。这意味着联接的目标类型可以是实体(沿实体关联联接时)、可嵌入类型(联接到可嵌入ElementCollection
时)或基本类型(联接到基本类型的ElementCollection
时)。
以上没有任何任何地方暗示使用具有基本类型的奇异属性的联接是有意义的。但是,JPA 实现可能会处理以供应商特定方式联接此类属性的尝试。