一对一的映射不起作用。我的编码和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);
}
}
你的映射是正确的。在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”}}