Я использую h2 в дБ памяти и не хочу создавать дубликаты в моей базе данных.Только когда я вручную использую createItem и идентификатор столбца ввода, он записывается в то же место.В противном случае, даже если GPS-координаты страны совпадают с приложением, запишите его в другое место с его идентификатором.
Я пытался понять, но это не работает
Я получил эти объекты.
@Entity
@Table(name = "item_System_items")
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private String description;
private BigDecimal price;
private Integer stock;
@ManyToOne
@JoinColumn(name = "location_id")
@Cascade(value={org.hibernate.annotations.CascadeType.ALL})
private Location location;
И
@Entity
@Table(name = "item_System_locations")
public class Location {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String country;
private String city;
private String street;
private String gpsCoordinates;
УСТАНОВКИ И ПОЛУЧЕНИЯ ЯВЛЯЮТСЯ ТАМ, ЧТО Я ПРОСТО НЕ ПОСТАВЛЯЮ ИХ ЗДЕСЬ
Контроллер
@RestController
@RequestMapping("/items")
public class ItemsController {
@Autowired
private ItemsService service;
@PostMapping
@ResponseStatus(value=HttpStatus.CREATED)
public int createItem(@RequestBody Item item) {
return service.createItem(item);
}
Сервис
@Service
@Transactional
public class ItemsService {
@Autowired
private ItemJPARepository repository;
public int createItem(Item item) {
return repository.save(item).getId();
}
Я ожидаю, что после перекодирования приложение не создаст новое местоположение, если значения столбцов совпадают.
Спасибо, люди!Если бы вы действительно помогли мне, я был бы так счастлив!