【发布时间】:2021-02-19 11:35:51
【问题描述】:
我有这个模型:
数据模型:
@Table(name = "data_model")
public class DataModel {
@Id
@GeneratedValue
@Column(name = "model_id")
private Integer id;
@OneToMany(orphanRemoval = true, mappedBy = "dataModel", cascade = {CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE})
private List<OutputField> outputFields;
@OneToMany(orphanRemoval = true, mappedBy = "dataModel", cascade = {CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE})
private List<IncrementField> incrementFields;
}
输出字段:
@Table(name = "data_model_output_field")
public class OutputField {
@Id
@GeneratedValue
@Column(name = "output_field_id")
private Integer id;
@ManyToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "model_id")
private DataModel dataModel;
}
增量字段:
@Entity
@Table(name = "data_model_increment_field")
public class IncrementField {
@Id
@GeneratedValue
@Column(name = "increment_field_id")
private Integer id;
@ManyToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "model_id")
private DataModel dataModel;
}
我有服务方法:
@Transactional
public void createOrUpdate(DataModel dataModel) {
DataModel savedDataModel = dataModelRepository.save(dataModel);
}
当我尝试保存实体时,在日志中我看到许多选择查询:
Name:test-ds, Connection:9, Time:0, Success:True
Type:Prepared, Batch:False, QuerySize:1, BatchSize:0
Query:["
select
outputfiel0_.model_id as model_id8_4_0_
from
data_model_output_field outputfiel0_
where
outputfiel0_.output_field_id=1"]
Name:test-ds, Connection:9, Time:0, Success:True
Type:Prepared, Batch:False, QuerySize:1, BatchSize:0
Query:["
select
outputfiel0_.model_id as model_id8_4_0_
from
data_model_output_field outputfiel0_
where
outputfiel0_.output_field_id=2"]
Name:test-ds, Connection:9, Time:0, Success:True
Type:Prepared, Batch:False, QuerySize:1, BatchSize:0
Query:["
select
outputfiel0_.model_id as model_id8_4_0_
from
data_model_output_field outputfiel0_
where
outputfiel0_.output_field_id=3"]
Name:test-ds, Connection:9, Time:0, Success:True
Type:Prepared, Batch:False, QuerySize:1, BatchSize:0
Query:["
select
outputfiel0_.model_id as model_id8_4_0_
from
data_model_output_field outputfiel0_
where
outputfiel0_.output_field_id=4"]
Name:test-ds, Connection:9, Time:0, Success:True
Type:Prepared, Batch:False, QuerySize:1, BatchSize:0
Query:["
select
outputfiel0_.model_id as model_id8_4_0_
from
data_model_output_field outputfiel0_
where
outputfiel0_.model_id=2"]
它通过 id 获取每个字段。但是他为什么这样做,他可以立即通过model_id拿起名单?
此外,在日志的最后,他做到了。那他为什么需要之前的查询呢?
更新:
【问题讨论】:
标签: java hibernate spring-data-jpa spring-data