Java 同时在两个类上进行Spring引导更新
我用SpringBoot启动一个项目,我使用一个有6个表的数据库。 这是一个CRUD应用程序 因此,我有5个表的entities/dto/service/controller/repository包。(SQL中的6个表) 现在,我想将实体x的表x(SQL)列中的一行更新为特定行中的另一个实体y 在我看来,这应该在createx的服务层完成,但是如何完成呢 我是否应该使用来自2个实体的数据创建xyDTO?我害怕这样做,因为表y不会自动更新。但是当创建xyDTO时。我不要这个 如何将特定DTO x的数据同时更新到另一个DTO y(SQL的第六个表) 我在网上找不到类似的例子。有人能帮我吗 我的代码:Java 同时在两个类上进行Spring引导更新,java,spring,spring-boot,rest,dto,Java,Spring,Spring Boot,Rest,Dto,我用SpringBoot启动一个项目,我使用一个有6个表的数据库。 这是一个CRUD应用程序 因此,我有5个表的entities/dto/service/controller/repository包。(SQL中的6个表) 现在,我想将实体x的表x(SQL)列中的一行更新为特定行中的另一个实体y 在我看来,这应该在createx的服务层完成,但是如何完成呢 我是否应该使用来自2个实体的数据创建xyDTO?我害怕这样做,因为表y不会自动更新。但是当创建xyDTO时。我不要这个 如何将特定DTO x的
@Entity
@Table(name = "repo")
public class Repo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
Long id;
@Column(name="stock")
private Long stock;
}
@Entity
@Table(name = "voucher")
public class Voucher {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "quantity")
private BigDecimal quantity;
@Column(name = "type")
private boolean type;
}
@Service
public class VoucherService{
@Override
public Voucher dtoToEntity(VoucherDTO dto) {
Voucher voucher = new Voucher();
voucher.setId(dto.getId());
voucher.setDescription(dto.getDescription());
List<VoucherProduct> voucherList = new ArrayList<>();
for (VoucherProductDTOMini inv : dto.getVoucherproducts()) {
VoucherProduct voucherL = voucherProductService.DTOtoEntity(inv);
voucherList.add(voucherL);
}
voucher.setVoucherproducts(voucherList);
return voucher;
}
@Override
public VoucherDTO createVoucher(VoucherDTO voucherDTO) {
Voucher voucher=new Voucher();
voucher=voucherRepository.save(voucher);
VoucherDTO voucherDTOnew=new VoucherDTO(voucher);
return voucherDTOnew;
}
}
@实体
@表(name=“回购”)
公开回购{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
长id;
@列(name=“stock”)
私人长期股;
}
@实体
@表(name=“凭证”)
公课券{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私人长id;
@列(名称=“数量”)
私有大十进制数;
@列(name=“type”)
私有布尔型;
}
@服务
公共类凭单服务{
@凌驾
公共凭证dto实体(凭证dto){
凭证=新凭证();
凭证.setId(dto.getId());
凭证.setDescription(dto.getDescription());
List voucherList=new ArrayList();
对于(VoucherProductDTOMini inv:dto.getVoucherproducts()){
VoucherProduct voucherL=voucherProductService.DTOtoEntity(inv);
voucherList.add(voucherL);
}
凭证.设置凭证产品(凭证列表);
退货凭证;
}
@凌驾
创建凭证的公共凭证(凭证到凭证){
凭证=新凭证();
凭证=凭证存储库。保存(凭证);
VoucherDTO voucherDTOnew=新的VoucherDTO(凭证);
退还凭证;
}
}
我应该
检查我的凭证类型(true),我应该在
股票
我可以用哪种方式同时更新这两个实体
当我添加真实凭证时,我应该在我的
回购股票
上添加凭证.数量的数据
首先,我想强调您代码中的一些内容:
@Override
注释的原因createVoucher
方法中,创建完全为空的实体,这不是一件好事回答您关于如何在一次呼叫中更新两个实体的问题。正如我理解您的问题,您希望通过一个请求更新两个不同实体中的不同属性。这是可能的,尽管有不同的方法
让我知道这是否回答了你的问题。拥有许多DTO对象和服务等并没有什么错
如果您想轻松生成所有DTO对象,请查看以下内容:请更好地澄清您的问题,因为很难理解您要做什么。如果您试图更新外键列,请直接提及。此外,最好为实体提供代码,以便我们了解数据库中的关系。基本上,流程应该是这样的:获取需要更新的实体(让Hibernate处理所有查询和延迟加载)->更改要保存的属性->保存非常感谢您的时间和提示。我在我的帖子中添加了一些代码,这可能会有所帮助。@CareyLynda很高兴听到这个消息,如果这确实回答了你的问题,请将其标记为答案