#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;