В настоящее время я сталкиваюсь с проблемой, заключающейся в том, что если я пытаюсь создать местоположение с адресом через RepositoryRestController, в базу данных вставляется только местоположение (MySQL), а не адрес.
Содержимое POST-запроса
{
"name": "locationname",
"description": "testdescr",
"address": {
"city": "somecity",
....
}
}
Если я POST точно такое же местоположение к моему RestController (API / контроллер / местоположения), обоих адрес и местоположение вставляются в БД (что я и хочу)
Итак, мой вопрос: есть ли способ отобразить отношение адрес-местоположение так, чтобы оба создается, когда я размещаю местоположение в моем RepositoryRestController? (а также может быть обновлен / удален аналогичным образом)
Я НЕ хочу иметь ссылку на местоположение в моем адресе. java (адрес должен использоваться в много разных классов)
Адрес должен обновляться самостоятельно.
...
Соответствующие классы:
Адрес. java
@Entity
@Data
@Table(name = "twm_address")
public class Address implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;
@Version
@Column(name = "version", nullable = true)
private int version;
private String city;
...
}
Местоположение. java
@Entity
@Data
@Table(name = "twm_location")
public class Location implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;
@Version
@Column(name = "version", nullable = true)
private int version;
private String name;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name="address_id")
private Address address;
}
LocationRepository. java
@RepositoryRestResource
public interface LocationRepository extends JpaRepository<Location, String> {
}
AddressRepository. java
@RepositoryRestResource
public interface AddressRepository extends JpaRepository<Address, String> {
}
LocationController. java
@RestController
@CrossOrigin(origins = "http://localhost:3000")
@RequestMapping("api/controller/locations")
public class LocationController {
Logger logger = LoggerFactory.getLogger(LocationController.class);
@Autowired
private LocationRepository locationRepo;
@PostMapping
Location createLocation(@RequestBody Location location) {
return locationRepo.save(location);
}
}