Я разрабатываю приложение API, однако у меня возникают трудности с конкретным методом.
Метод getCertificationPOJO
отвечает за принятие Store в качестве параметра и поиск, существует ли это хранилище в база данных.
Теперь проблема в том, как я передаю объект Store в качестве параметра в Postman. Я пробовал передать его как строку JSON, но это не работает .
Приносим извинения за неправильное редактирование
Контроллер сертификации
@Controller
public class CertController {
@Autowired
private CertificationRepository certRepo;
@Autowired
private StoreRepository StoreRepository;
@GetMapping(value = "/getCertObject")
public @ResponseBody
Optional<Certification> getCertificationPOJO(@RequestParam Store store)
{return Lists.newArrayList(certRepo.findAll()).stream().filter(e->e.getStore() == store).findFirst();}
}
Класс магазина
@Entity
@Table(name = "store")
public class Store implements com.halal.abstractions.Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@JsonIgnore
@OneToOne(optional = true) // By default this is set to true so technically this is redundant but, yea lets
// just keep it there
private Certification certification;
@NotNull
@Column(nullable = false)
private String name;
private String phoneNumber;
@NotNull
@Column(nullable = false)
private String address;
@NotNull
@Column(nullable = false)
private double latitude;
@NotNull
@Column(nullable = false)
private double longitude;
@NotNull
@Column(nullable = false)
private Date dateAdded;
static final DateFormat DF = new SimpleDateFormat("dd/MM/yyyy");
protected Store() {
}
public Store(String name, String phoneNumber, String address, double latitude, double longitude) {
this.name = name;
this.setPhoneNumber(phoneNumber);
this.setAddress(address);
this.latitude = latitude;
this.longitude = longitude;
this.dateAdded = new Date(System.currentTimeMillis());
}
@Override
public Long getId() {
return this.id;
}
@Override
public void setId(long id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Double getLatitude() {
return this.latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public Double getLongitude() {
return this.longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
@Override
public String getDateAdded() {
return DF.format(dateAdded);
}
@Override
public void setCertification(Certification certification) {
this.certification = certification;
}
@Override
public Certification getCertification() {
return this.certification;
}
@Override
public String toString() {
return "Store{" + "id=" + id + ", certification=" + certification + ", name='" + name + '\'' + ", phoneNumber='"
+ phoneNumber + '\'' + ", address='" + address + '\'' + ", latitude=" + latitude + ", longitude="
+ longitude + ", dateAdded=" + dateAdded + '}';
}
}
Класс сертификации
@Entity
@Table(name = "certification")
public class Certification {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotNull
@Column(nullable = false)
private boolean isCertified;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "id")
@JsonIgnore
private Store store;
public Certification() {
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public Store getStore() {
return this.store;
}
public void setStore(Store store) {
this.store = store;
}
public boolean isIsCertified() {
return this.isCertified;
}
public void setIsCertified(boolean isCertified) {
this.isCertified = isCertified;
}
@Override
public String toString() {
return "Certification{" + "id=" + id + ", isCertified= " + isCertified + '}';
}
}
Скриншот почтальона