Ahm*_*hia 5 java spring hibernate jpa spring-data-jpa
我有以下实体:
虚拟A:
@Entity
@Table(name = "dummy_a")
@Data
public class DummyA implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "dummy_b_name", referencedColumnName = "name", updatable = false, insertable = false)
private DummyB dummyB;
}
Run Code Online (Sandbox Code Playgroud)
虚拟B:
@Entity
@Table(name = "dummy_b")
@Data
public class DummyB implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "entity_id")
private Integer id;
@Column(name = "name")
private String name;
}
Run Code Online (Sandbox Code Playgroud)
就目前而言,任何获取DummyA对象的尝试都会导致额外的查询来获取DummyB对象。由于 N+1 查询,这会导致不可接受的额外延迟,并且还会破坏Page返回的对象repository.findAll(specification, pageable),导致返回不正确的总页数和元素计数(在我的情况下为repositoryextends JpaRepository)。有没有办法做到这一点,以便延迟加载 DummyB 对象,或者,如果不可能,则可以在单个查询中急切地加载它们?
局限性:我对 JPA 和 Hibernate 相当陌生,并且一直在学习如何使用它们。我在正在从事的项目中遇到了以下情况。我没有自由包含新的依赖项,并且我的项目当前不允许通过@LazyToOne(LazyToOneOption.NO_PROXY).
到目前为止我已经尝试过但没有工作/没有按预期工作的事情:
@ManyToOne(optinoal = false, fetch = FetchType.LAZY)dummyBin 中的字段dummyA是否导致 N+1 查询。dummyB仍然有N+1个查询。@EntityGraph于findAll.PersistentAttributeInterceptable和使用PersistentAttributeInterceptor来解决问题。到目前为止我查找过的资源链接:
任何帮助是极大的赞赏。
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |