Я вызываю этот метод из другого метода, чтобы избавиться от запись — кто-то удаляет элементы, связанные с параметром. У меня есть журналы, которые сообщают мне, что идентификатор параметра передается в запрос, поэтому проблема, похоже, связана с самим запросом. Когда я проверяю свой код в Swagger, я просто продолжаю получать сообщение «Данные не найдены».
Я впервые пытаюсь удалить запись со встроенным идентификатором, и я просто не могу заставить запрос работать. Может кто-нибудь сказать мне, что я делаю не так?
Вот метод удаления, в котором я использую свой запрос:
Код: Выделить всё
@Override
@Transactional
public void deleteParameterById(Long parameterId) {
Query query = entityManager
.createQuery("DELETE FROM ParameterEntity pa WHERE pa.ParameterEntityId.parameterId = ?1");
query.setParameter(1, parameterId)
.executeUpdate();
}
Код: Выделить всё
@Embeddable
public class ParameterEntityId implements Serializable {
@Column(name = "PARAMETER_ID")
private Long parameterId;
@Column(name = "PARAMETER_ATTRIBUTE_TYPE_ID")
private Long parameterAttributeTypeId;
Код: Выделить всё
@Entity
@Table(name = "parameter")
public class ParameterEntity {
@EmbeddedId
private ParameterEntityId parameterEntityId;
@Column(name = "VALUE")
private String value;
Сначала я просто просто попытался написать собственный запрос и вызвать прямо таблицу БД Parameters и выбрать parameter_cd напрямую, чтобы обойти этот встроенный ключ (БД использует составной ключ < em>parameter_id и parameter_attribute_type_id), но когда я тестировал его в Swagger, я просто получил сообщение «обработка», и запрос никогда не завершал выполнение.
Я также убедился, что у приложения есть необходимые разрешения на редактирование и удаление из таблицы.
Подробнее здесь: https://stackoverflow.com/questions/790 ... mbedded-id
Мобильная версия