Допустим, у меня есть таблица под названием «ПОЛЬЗОВАТЕЛЬ». В этой таблице у меня есть все пользовательские данные, и я назначаю пользователю уникальный идентификатор, и поэтому каждая строка уникальна.
Это выглядит примерно так:
@Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_seq")
@Column(name = "USER_ID")
private Long userId;
@Column(name = "FRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
... a lot more stuff ...
}
У меня также есть другая таблица, в которой я назначаю все роли, которые есть у пользователя, и выглядит каждая строка:
@Entity
@Table(name = "USER_ROLES")
public class UserRoleMap {
@Id
@Column(name = "USER_ID")
Long userId;
@Column(name = "USER_ROLE_ID")
Long userRoleId;
@Column(name = "UPDATED_DATE")
String updatedDate;
@Column(name = "UPDATED_BY")
String updatedBy;
}
Эта таблица не имеет явного уникального ключа. Данные могут легко выглядеть следующим образом, где 12278
- уникальный идентификатор пользователя.
12,278 8,420 pretend_timestamp admin_user
12,278 8,430 pretend_timestamp admin_user
12,278 8,476 pretend_timestamp admin_user
12,278 8,478 pretend_timestamp admin_user
12,278 18,578 pretend_timestamp admin_user
12,278 8,482 pretend_timestamp admin_user
12,278 18,539 pretend_timestamp admin_user
Так как мне сделать следующее с помощью идиоматической пружинной загрузки?
DELETE USER_ROLES where USER_ID = 12278
Я пробовал следующее, но spring-boot выдает ошибку:
userRoleRepository.deleteById(user.getUserId);
дает
org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update