Могу ли я сохранить объект, содержащий другой объект, непосредственно в базе данных?
Моя внутренняя структура выглядит следующим образом:
- Службы отдыха
- Службы
- Репозиторий (расширяет
JpaRepository
) - Модель
Предположим, что в моей модели есть два объекта: Company
и Address
. Оба сгенерированы инструментом JPA, предоставленным IntelliJ.
Модель класса компании
@Entity
public class Company {
private int idcompany;
private String name;
private Address address;
@Id
@Column(name = "idcompany")
public int getIdcompany() {
return idcompany;
}
public void setIdcompany(int idcompany) {
this.idcompany = idcompany;
}
@Basic
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne
@JoinColumn(name = "idaddress", referencedColumnName = "idaddress", nullable = false)
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
Модель класса адреса
@Entity
public class Address {
private long idaddress;
private String zip;
@Id
@Column(name = "idaddress")
public long getIdaddress() {
return idaddress;
}
public void setIdaddress(long idaddress) {
this.idaddress = idaddress;
}
@Basic
@Column(name = "zip")
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
}
Кроме того, оба объекта имеют интерфейс, расширяющий интерфейс JpaRepository<T,ID>
. Итак, у меня есть CompanyRepository
и AddressRepository
. Я использую эти два интерфейса в соответствующих классах обслуживания : CompanyService
и AddressService
. Вот куда я положил бизнес логи c. Все ок !
Теперь я получаю с помощью службы REST через POST объект Company
, который содержит объект Address
. Мне нужно сохранить их в базе данных (MySql).
В файле json есть Company
, который содержит Address
!
До сих пор я всегда выполните следующие действия:
- Сохраните
Address
; - Получите
Address
только что сохраненный (мне нужно idaddress
); - Я связываю
Address
в компанию, используя setAddress
; - Сохранить
Company
Я попытался сохранить объект Company
, полученный через REST, вызвав метод save
из CompanyService
(используя CompanyRepository
), но я получил ошибку:
Column 'idaddress' cannot be null
Прошу вас. Есть ли более простой способ сохранить Company
и Address
одновременно , используя JpaRepository
???