onetoone Mapping在我的spring boot rest应用程序和json mysql中不起作用

问题描述 投票:1回答:1

一对一的映射不起作用。我的编码和json是从邮递员发布的。值保存到mysql db中,它只保存在我的第一个db“pharmacy”中,第二个Db不保存,即外键映射。 ;

json: {
    "pharmacyName":"test",
    "pharmacyaddress":{
   '     "pinCode":"600001",
          "address":"sample"

    }
}

第一实体

@Entity @Table(name = "pharmacy") 
public class PharmacyEntity{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "phrm_id")
    private Long id;
    private String pharmacyName;
    @OneToOne(mappedBy = "pharmacyEntity", cascade = CascadeType.ALL, 
         fetch = FetchType.LAZY, optional = false)
     private PharmacyDetailsEntity pharmacyaddress;
    public PharmacyDetailsEntity getPharmacyaddress() {
        return pharmacyaddress;
    }

    public void setPharmacyaddress(PharmacyDetailsEntity pharmacyaddress) {
        this.pharmacyaddress = pharmacyaddress;
        pharmacyaddress.setPharmacyEntity(this);
    }

//山羊和塞特


第二实体;

@Entity
@Table(name = "phrm_details")
public class PharmacyDetailsEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "phrm_dtls_id")
    private int id;

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "phrm_id", referencedColumnName = "phrm_id")
    private PharmacyEntity pharmacyEntity;

    @Column(name = "pin_code")
    private int pinCode;
    @Column(columnDefinition = "TEXT")
    private String address;


}

这是我的@Restcontroller,我使用JPA Repository进行保存,也使用服务和服务实现

my controller is

@RequestMapping(value = "/savepharmacy", method = RequestMethod.POST,consumes = "application/json", produces = "application/json")

public ResponseEntity<?> createPharmacy( @RequestBody PharmacyEntity pharmacyEntity) {
    try {

        PharmacyEntity ph = pharmacyservice.savePharmacy(pharmacyEntity);
        return new ResponseEntity<ProjectStatus>(HttpStatus.CREATED);
    } catch (Exception e) {
        return new ResponseEntity<CustomErrorType>( HttpStatus.BAD_REQUEST);
    }
}
java json spring hibernate spring-boot
1个回答
0
投票

你的映射是正确的。在Dao中使用EntityManager。

药房DaoImpl:

@Autowired
EntityManager entityManager;

@Override
public PharmacyEntity save(PharmacyEntity entity) {


    entityManager.persist(entity);
    return entity;
}

输入数据 :

{“pharmacyName”:“test”,“pharmacyaddress”:{“pinCode”:“600001”,“address”:“sample”}}

回应:

{“id”:6,“pharmacyName”:“test”,“pharmacyaddress”:{“id”:6,“pharmacyEntity”:null,“pinCode”:600001,“address”:“sample”}}

© www.soinside.com 2019 - 2024. All rights reserved.