Удаление строки базы данных с использованием сущности со встроенным идентификаторомJAVA

Программисты JAVA общаются здесь
Anonymous
Удаление строки базы данных с использованием сущности со встроенным идентификатором

Сообщение Anonymous »

Я работаю над приложением, использующим JPA, Rest, Hibernate, Spring Boot и использующим Java для серверной части.
Я вызываю этот метод из другого метода, удалить запись, если кто-то удалит элементы, связанные с параметром. У меня есть журналы, которые сообщают мне, что идентификатор параметра передается в запрос, поэтому проблема, похоже, связана с самим запросом. Когда я проверяю свой код в 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();

}

Вот встроенный идентификатор (ParameterEntityId.java):
@Embeddable
public class ParameterEntityId implements Serializable {

@Column(name = "PARAMETER_ID")
private Long parameterId;

@Column(name = "PARAMETER_ATTRIBUTE_TYPE_ID")
private Long parameterAttributeTypeId;


Вот мой файл сущности (ParameterEntity.java):
@Entity
@Table(name = "parameter")
public class ParameterEntity {

@EmbeddedId
private ParameterEntityId parameterEntityId;

@Column(name = "VALUE")
private String value;


Я нашел много примеров использования репозиториев JPA, но это не то, как настроено это приложение, мы используем сущности.
Сначала я просто просто попытался написать собственный запрос и вызвать прямо таблицу БД Parameters и напрямую выбрать parameter_cd, чтобы я мог обойти этот встроенный ключ (БД использует составной ключ < em>parameter_id и parameter_attribute_type_id), но когда я тестировал его в Swagger, я просто получил сообщение «обработка», и запрос никогда не завершал выполнение.
Я также убедился, что у приложения есть необходимые разрешения на редактирование и удаление из таблицы.
вот мой исходный собственный запрос:@Override
@Transactional
public void deleteParameterById(Long parameterId) {

entityManager.createNativeQuery("DELETE FROM *dbname(redacted)*.parameter WHERE parameter_id = ?1")
.setParameter(1, parameterId).executeUpdate();

}


Подробнее здесь: https://stackoverflow.com/questions/790 ... mbedded-id

Вернуться в «JAVA»