У меня есть приложение весенней загрузки с данными о Spring и гибернацией для сохранения данных в базе данных MySQL У меня есть таблица пользователей и таблица адресов с одним слишком много отношений. Когда я сохраняю данные, автоматически сгенерированный первичный ключ генерируется правильно, но когда я обновляю таблицу адресов (добавляю второй адрес пользователю), первичный ключ, который генерируется для второго пользователя, не является последовательным.
Это мои сущности.
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_generator")
@SequenceGenerator(name="user_generator", sequenceName = "user_seq")
@Column(name = "user_id")
private Long id;
@Unique
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String firstname;
@Column(nullable = false)
private String lastname;
private String password;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private List<Address> address;
private Boolean active;
private String mobile;
private String home;
public User() {
}
@Entity
@Table(name = "address")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "address_generator")
@SequenceGenerator(name = "address_generator", sequenceName = "address_seq")
@Column(name = "adress_id")
private Long id;
@Column(nullable = false)
private String street1;
private String street2;
@Column(nullable = false)
private String city;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
Это метод обновления
@Override
public UserDTO updateUser(UserDTO userDto) {
User user = userMapper.getUserEntity(userDto);
user.getAddress().forEach(a->a.setUser(user));
User updatedUser = userRepository.save(user);
return userMapper.getUserDTO(updatedUser);
}
Это моя полезная нагрузка. Адрес с id = 2 уже сохранен, и я добавляю второй адрес.
{
"id": 2,
"username": "test@gmail.com",
"firstname": "lana",
"lastname": "Lee",
"address": [
{
"id": 2,
"street1": "344",
"street2": "abcd",
"city": "mycity"
},
{
"street1": "7",
"street2": "cde",
"city": "mycity"
}
],
"active": false,
"mobile": "1232211441"
}
, когда я обновляю это, как выглядит столбец id таблицы адресов. Адрес нового добавленного адреса - 52 вместо 5.