Spring Rest Hibernate создать вложенный объект - PullRequest
0 голосов
/ 11 мая 2019

У меня есть 3 модели PaymentPlan, PaymentPlanDetail, PaymentPlanElement

PaymentPlan имеет один или несколько PaymentPlanDetail, PaymentPlanElement имеет один или несколько PaymentPlanDetail,

Существует следующая связь:

public class PaymentPlan{

  //

  @OneToMany(mappedBy = "paymentPlan",cascade = CascadeType.ALL)
  private List<PaymentPlanDetail> paymentPlanDetails= new ArrayList<>();  
}

public class PaymentPlanDetail{

  //

  @ManyToOne(name = paymentPlanElementId)
  private PaymentPlanElement paymentPlanElement;  
}

public class PaymentPlanElement{

  //

  @OneToMany(mappedBy = "paymentPlanElement",cascade = CascadeType.ALL)
  private List<PaymentPlanDetail> paymentPlanDetails= new ArrayList<>  
}

Я отправляю объект запроса, который выглядит как

 {
    name:'foo',

    paymentPlanDetails: [
      {
        name: 'bar',
        paymentPlanElement:{
          id: 12,
          style: 'baz'
        }
      }
    ]

  }

Элемент плана платежей уже создан, Я хочу отправить объект JSON и сохранить план платежей, включая данные плана платежей, но я получил сообщение об ошибке payment_plan_id is null, Есть ли способ сделать это в одной транзакции?

редактировать: My PaymentPlan Controller

@RestController
@RequestMapping("/api/payment-plans")
@CrossOrigin(origins = "http://localhost:4200")
@RequiredArgsConstructor
public class PaymentPlanController {

  private final PaymentPlanService paymentPlanService;

  @PostMapping
  public PaymentPlan create(@RequestBody PaymentPlan paymentPlan) {
    return paymentPlanService.create(paymentPlan);
  }

}

и PaymentPland DTO

public interface PaymentPlanDao extends JpaRepository<PaymentPlan, Integer> { }

1 Ответ

0 голосов
/ 11 мая 2019
 @ManyToOne
 @JoinColumn(name="paymentPlan")  
 private PaymentPlan paymentPlan;

 Add this to Your PaymentPlanDetail Class As it will Map both the classes As Above map other class too.

Надеюсь, это поможет.

...