Как получить значение внутри foreach, чтобы правильно установить его в родительский массив? когда я пытался получить значение, он сказал, что тип возврата недействителен, поэтому его нельзя установить, вот мой код:
Вот мой партнер. java Модель:
@Data
@Entity
@Audited
@EntityListeners(AuditingEntityListener.class)
@Table(name = "msPartner")
public class Partner {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
public String partnerCode;
public String partnerName;
@CreatedDate
private Date createDate;
@LastModifiedDate
private Date lastModifiedDate;
@CreatedBy
private String createdBy;
@LastModifiedBy
private String modifiedBy;
@OneToMany(mappedBy = "partner", cascade = CascadeType.ALL)
public List<PartnerShipment> partnerShipment;
}
, а затем вот мой PartnerShipment. java:
@Data
@Entity
@Audited
@EntityListeners(AuditingEntityListener.class)
@Table(name = "msPartnerShipment")
public class PartnerShipment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
public String partnerShipmentCode;
public String partnerShipmentAddress;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "partnerId")
// @NotAudited
// @JsonManagedReference
public Partner partner;
@CreatedDate
private Date createDate;
@LastModifiedDate
private Date lastModifiedDate;
@CreatedBy
private String createdBy;
@LastModifiedBy
private String modifiedBy;
}
и вот я мой сервис, я хочу обновить две строки моей таблицы partner_shipment:
public Partner edit(InputRequest<Partner> request) {
Partner partner;
String currentUser = request.getLoggedInUser();
Long partnerId = request.getPartner().getId();
Partner oldPartner = partnerRepository.findById(partnerId).get();
if (oldPartner != null) {
partner = request.getPartner();
partner.setCreateDate(oldPartner.getCreateDate());
partner.setCreatedBy(oldPartner.getCreatedBy());
partner.setModifiedBy(currentUser);
partner.getPartnerShipment().forEach(d -> {
d.setId(oldPartner.getPartnerShipment().forEach(a -> a.getId()));
d.setPartner(partner);
d.setCreateDate(oldPartner.getPartnerShipment().get(0).getCreateDate());
d.setCreatedBy(oldPartner.getCreatedBy());
d.setModifiedBy(currentUser);
});
return partnerRepository.save(partner);
} else {
throw new RuntimeException("Employee not found with id : " + partnerId);
}
}
здесь, в этой строке
d.setId(oldPartner.getPartnerShipment().forEach(a -> a.getId()));
вот полная ошибка:
The method setId(Long) in the type PartnerShipment is not applicable for the arguments (void)
как я могу получить старый идентификатор из каждой строки partner_shipment и установить его в partner_shipment, чтобы спящий режим правильно обновить строку на основе нового значения?