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

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

Сообщение Anonymous »

Я боролся с этим уже пару дней и нахожусь в тупике. Я работаю над приложением, которое использует JPA, Rest, Hibernate, Springboot и запускает 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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