可嵌入和基本类型的JPA连接类型

时间:2017-10-21 18:09:49

标签: jpa join embeddable

JPA 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,查询将返回空结果?嵌入式的相同吗?

1 个答案:

答案 0 :(得分:0)

我认为你误解了文档。

联接可与ManyToOneOneToManyManyToManyElementCollectionElementCollection映射一起使用。这意味着联接的目标类型可以是实体(当加入实体关联时),可嵌入(加入{{时) 1}}嵌入式),或基本类型(加入基本类型的ElementCollection时)。

上述任何地方都暗示使用具有基本类型的奇异属性的连接是有意义的。但是,JPA实现可能会以供应商特定的方式处理尝试加入这些属性。