簡體   English   中英

如何在Spring Boot中修復雙向一對多關系

[英]How to fix my bidirectional one to many relationship in Spring Boot

我正在嘗試在兩個表之間建立一對多關系,兩個表之一是聚合根表(Vessel)。 但是當我創建一個新實體時,多對一表不會將其外鍵映射到多對一表的主鍵。 我做錯了什么?

血管表(一對多)

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "vessel_info")
@SequenceGenerator(name = "vessel_id_seq",sequenceName = "vessel_id_seq", initialValue = 1,allocationSize = 1)
public class Vessel {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="vessel_id_seq" )
    @Column(name = "vessel_code")
    private Long vesselCode;

    private String name;
    private Long companyId;
    private Long  imo;
    private String type;
    @Column(name = "fleet_id")
    private Long fleetId;
    private String yard;
    private Integer hn;
    private Date delivered;
    private Double age;


    @OneToMany(mappedBy = "vessel",cascade = CascadeType.ALL,
            targetEntity = BoilerInfo.class, orphanRemoval = true,fetch = FetchType.EAGER)
    private List<BoilerInfo> boilerInfo ;

BoilerInfo表(多對一)

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "boiler_info")
@SequenceGenerator(name = "boiler_id_seq",sequenceName = "boiler_id_seq", initialValue = 1,allocationSize = 1)
public class BoilerInfo {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="boiler_id_seq" )
    private Long id;


    private String maker;
    private String type;
    private String tubeType;
    private String exhGasByPass;

    @ManyToOne(fetch = FetchType.EAGER, optional = false,targetEntity = Vessel.class)
    @JoinColumn(name="vessel_code",nullable = false)
    private Vessel vessel;


}

創建船只

private final VesselRepository vesselRepository ;
@Override
public Vessel create(Vessel entity) {
    log.info("Creating {}.", entity);
    Vessel vessel = vesselRepository.save(entity);
    return vessel;
    }

JSON開機自檢

{   

    "fleetId":"1",
    "name":"BOILERTEST",
    "type":"temp",
    "companyId":"1",
    "boilerInfo":[{
        "maker": "temp",
        "type":"temp"
    }]
}

SQL查詢中的日志

設置關系的兩面:

vesel.getBoilerinfos().add(boilerInfo);
boilerInfo.setVesel(vesel);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM