Spring boot получает допустимую сущность из другой таблицы и проблему с общим доступом к приращению идентификатора

#java #spring #database #spring-boot

Вопрос:

У меня два разных стола, Пицца и Пользователь. Прежде всего, когда я создаю первую сущность, например, из пользователя, идентификатор равен 1. После этого, когда я захочу создать пиццу, ее идентификатор будет равен 2. Они каким-то образом поделились удостоверением личности. Как я могу это исправить?

И мой другой вопрос: у меня есть третья таблица с именем Заказы. Мне удалось спросить о создании заказа для действительного пользователя и идентификатора пиццы, но я просто хочу знать, что было бы лучшим решением для этого? Я только что создал объект «Пицца и обслуживание пользователей» в Контроллере заказов, а также сделал ссылку оттуда. Но я не знаю, насколько это плохо.

Спасибо вам за ответы!

 @Entity(name = "pizza")
@Table(name = "pizza")
public class Pizza {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @NotNull
    private String type;
 
 @Entity(name = "users")
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @NotNull
    private String email;
    @NotNull
    private String address;
 
 @Entity(name = "orders")
@Table(name = "orders")
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @NotNull
    private int user_id;
    @NotNull
    private int pizza_id;
 
 @RestController
public class OrderController {

    @Autowired
    private OrderService orderService;
    @Autowired
    private UserService userService;
    @Autowired
    private PizzaService pizzaService;
 

Комментарии:

1. Как была создана схема, вы ее создали? Или Гибернация сделала это за вас? Какую базу данных вы используете?

Ответ №1:

попробуйте использовать тип генерации идентификаторов вместо автоматического:

 @GeneratedValue(strategy = GenerationType.IDENTITY)
 

Ответ №2:

что касается вашего первого вопроса, я думаю, вам следует изменить :

  @GeneratedValue(strategy = GenerationType.AUTO)
 

Для

 @GeneratedValue(strategy = GenerationType.IDENTITY)
 

для вашего второго вопроса я думаю, что вы должны использовать аннотацию отношений между вашими сущностями :
Нравится:

 @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID_USER")
Private User user;