Я боролся с этим уже пару дней и нахожусь в тупике. Я работаю над приложением, которое использует 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
Удаление строки базы данных с использованием объекта со встроенным идентификатором ⇐ JAVA
Программисты JAVA общаются здесь
1727970449
Anonymous
Я боролся с этим уже пару дней и нахожусь в тупике. Я работаю над приложением, которое использует JPA, Rest, Hibernate, Springboot и запускает Java для серверной части.
Я вызываю этот метод из другого метода, чтобы избавиться от запись — кто-то удаляет элементы, связанные с параметром. У меня есть журналы, которые сообщают мне, что идентификатор параметра передается в запрос, поэтому проблема, похоже, связана с самим запросом. Когда я проверяю свой код в Swagger, я просто продолжаю получать сообщение «Данные не найдены».
Я впервые пытаюсь удалить запись со встроенным идентификатором, и я просто не могу заставить запрос работать. Может кто-нибудь сказать мне, что я делаю не так?
[b]Вот метод удаления, в котором я использую свой запрос:[/b]
@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();
}
[b]Вот встроенный идентификатор (ParameterEntityId.java):[/b]
@Embeddable
public class ParameterEntityId implements Serializable {
@Column(name = "PARAMETER_ID")
private Long parameterId;
@Column(name = "PARAMETER_ATTRIBUTE_TYPE_ID")
private Long parameterAttributeTypeId;
[b]Вот мой файл сущности (ParameterEntity.java):[/b]
@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();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79048591/deleting-a-database-row-using-and-entity-with-an-embedded-id[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия