在一个事务中向JHipster发送PUT/GET/POST请求

在一个事务中向JHipster发送PUT/GET/POST请求,jhipster,Jhipster,我是Jhipster的新手,对它的一些功能理解有问题。因此,我的问题是 我有以下两个微服务。 Microservice 1(MS1)在Java中具有以下数据结构: Lead { Customer customer; Deal deal; } Customer{ Integer phoneNumber; etc... } Deal{ Integer value; etc... } Microservice 2(MS2)是JHipster生成的数据库。 DB只有以下SQL表: CUSTOMER

我是Jhipster的新手,对它的一些功能理解有问题。因此,我的问题是

我有以下两个微服务。 Microservice 1(MS1)在Java中具有以下数据结构:

Lead {
Customer customer;
Deal deal;
}

Customer{
Integer phoneNumber;
etc...
}

Deal{
Integer value;
etc...
}
Microservice 2(MS2)是JHipster生成的数据库。 DB只有以下SQL表:

CUSTOMER
LEAD
当Microservice 1中发生更改时,我会从MS1向MS2发送两个单独的PUT请求

  • 首先,通过MS2中的
    /CUSTOMER
    API请求更新CUSTOMER
  • 如果更新正常,则发送请求以更新MS2中的DEAL
    /DEAL
    API
若要成功更新Lead,请将请求提交给客户,交易应该都可以。如果更新一个表失败,则所有表都将失败

因此,我希望避免发送两个单独的请求,以避免出现客户请求正常而交易请求因任何原因失败的情况。 如果可能的话,我想通过API(如
/lead
)发送一个事务,该API包含两个表

在不为LEAD创建额外表格的情况下,实现这一目标的最佳方法是什么? e、 例如,我应该使用Jhipster生成的层/服务。 如果可能(但不是必要的),我希望避免接触频繁重新生成的代码。(例如,客户、交易)


如果已经有文档,请告诉我。它们很难理解,所以我不确定当前是否有专门解决这个问题的方法。谢谢。

当直接从CRUD REST API公开JPA实体时,这是一个常见问题。 持久性模型不需要是API模型

如果两个实体是相关的,并且应该在同一事务中更新,这意味着应该使用一个原子API请求更新它们

因此,您可以使用DTO来定义一个新资源,以组合您的两个实体,通过手动编写的新API公开(因此不需要额外的表)


由于您使用的是微服务体系结构,MS1和MS2之间也可能存在类似的情况,在这里您无法使用事务,然后您可能必须实施补救。

为了澄清,您的意思是我应该创建一个新的jhipster实体,该实体本身没有字段,但与客户和交易有关系。最终的结果是,对于API模型,我有一个LeadJava对象、LeadDToJava对象等。但是我如何确保持久性模型不包含这个新创建的潜在客户实体呢?是否有一个特定的文件我应该在代码生成后删除?不,我没有考虑使用
jhipster entity
,因为它可能会创建比您需要的更多的东西(您不需要持久性),删除它们可能容易出错,我只是想通过实现一个资源手动实现它,一个DTO和一个服务。不要过度使用代码生成