JPA Batch为具有一对多和多对一关联的实体选择

时间:2019-07-05 01:59:31

标签: jpa spring-data-jpa

我有以下声明的实体

@Entity
@Table(name = "table_a")
public class TableA extends AbstractEntity{
...
......
........
@OneToMany(
      orphanRemoval = false,
      mappedBy = "tableA",
      fetch = FetchType.LAZY
  )
  @BatchSize(size = 10000)
  private List<TableB> tabelB = new ArrayList<>();;

}

第二张表如下:

@Entity
@Table(name = "table_b")
public class TableB extends AbstractEntity{
...
......
........

 @ManyToOne
  @JoinColumn(name = "id")
  private TableA tableA;


  @ManyToOne
  @JoinColumn(name = "id")
  private TableC tableC;

}

下面的第三个表没有关联的属性:

@Entity
@Table(name = "table_c")
public class TableC extends AbstractEntity{
...
....
.....

}

现在,当我检查JPA日志时,没有批处理选择,并且当执行类似操作时,所有table_c查询都是单选择查询:

for (TableB tableB : tableA.getTableB()) {
     // some logic 
    }

在日志中,TableB有批处理选择语句,而TableC有单个选择语句。

我在这里缺少一些基本概念,请帮助我确定。 我尝试为TableC ManytoOne关联在TableB实体类中添加FetchType Lazy和批处理大小,但这没有用。

0 个答案:

没有答案