0

JPA join:可以join到Entity、Embeddable或basic类型。

@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 来看,加入 Embeddable 和 Basic 类型是合法的,但 JoinType 是什么意思?对于内连接属性“name”,如果book.name为null,查询会返回空结果吗?嵌入式类型也一样?

4

1 回答 1

1

我认为您误解了文档。

连接可以与、 、 和OneToOne映射ManyToOne一起OneToMany使用。这意味着连接的目标类型可能是实体(当沿着实体关联连接时)、可嵌入(当连接到一个可嵌入对象时)或基本类型(当连接到一个基本类型时)。ManyToManyElementCollectionElementCollectionElementCollection

上面没有任何地方暗示使用具有基本类型的单一属性的连接是有意义的。不过,JPA 实现可能会以供应商特定的方式处理加入此类属性的尝试。

于 2017-10-23T09:26:32.700 回答