java在实体Spring JPA中保存列表项
我想在配置实体中保存项目列表。但是,当模型的addItem()函数被调用时,就会发生这种情况。getItems()将为NULL。我不明白为什么。。。在同一请求中保存对象及其项的最佳方法是什么
配置。java
@Entity
@Getter
@Setter
@SuperBuilder
@NoArgsConstructor
public class Configuration extends BaseEntity{
@ManyToOne
private CarModel carModel;
@ManyToOne
private Country country;
@OneToMany(fetch = FetchType.LAZY)
private List<EquipmentItem> items = new ArrayList<>();
public void addItem(EquipmentItem equipmentItem){
this.getItems().add(equipmentItem);
}
}
ConfigurationServiceImpl。java
@Component
public class ConfigurationServiceImpl implements ConfigurationService{
@Autowired
private ConfigurationRepository configurationRepository;
@Autowired
private EquipmentItemRepository equipmentItemRepository;
@Override
public ConfigurationDTO save(ConfigurationDTO configurationDTO) {
Configuration configuration = Configuration.builder()
.name(configurationDTO.getName())
.build();
for (EquipmentItemDTO item: configurationDTO.getItems()) {
configuration.addItem(equipmentItemRepository.findById(item.getId())
.orElseThrow(EntityNotFoundException::new));
}
configurationRepository.save(configuration);
return DTOConverter.convertConfiguration(configuration);
}
}
# 1 楼答案
由于@SuperBuilder注释,您的列表被指定为null,因为如果未使用@Builder注释,它将忽略初始化值。默认值如下所示