EntityNotFoundException:无法找到ID 5 OneToOne映射儿童类(Ent

2019-10-30 12:43发布

我最初开始解决我@OneToOne映射脚本的N + 1选择问题,我终于能够降低多选查询之一。 我试着用EntityGraphs来解决N + 1层的问题,但它不工作。 所以我改变了我的@OneToOne映射LAZY,通过设置获取类型懒惰和设置可选=假。 我使用Hibernate的JPA。

我所做的更改,如下所示

Public Class Parent {

  @OneToOne(
      optional = false,
      mappedBy = "parent",
      fetch = FetchType.LAZY,
      cascade = {CascadeType.ALL})
  @NotFound
  private Child child;
}

在我的孩子类,

Public Class Child {

  @Id
  private String Id;

  @OneToOne
  @PrimaryKeyJoinColumn
  private Parent parent;

}

repository类是如下,

public interface ParentChildRepository extends PagingAndSortingRepository<Transaction, String> {


  @EntityGraph(value = "Parent.EntityGraph", type = EntityGraphType.LOAD)
  default List<Transaction> findall() {
    return StreamSupport.stream(findAll().spliterator(), false).collect(Collectors.toList());
  }
}

没有可选=假,惰性加载不工作,我得到N + 1 Select查询语句,但是当我做设置可选=假,EntityNotFoundException抛出异常。 当可选=虚假陈述被移除EntityNotFoundException没有抛出/设置为true,但它并没有解决我的N + 1个选择问题。

请提供一些建议。

Answer 1:

尝试使用未找到忽略像下面。

@NotFound(action = NotFoundAction.IGNORE)

请参阅本



文章来源: EntityNotFoundException: Unable to find Child class with id 5 on OneToOne Mapping