powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / SQLUpdate не отрабатывает
13 сообщений из 13, страница 1 из 1
SQLUpdate не отрабатывает
    #40108129
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему может не отрабатывать аннотация SQLUpdate?
Entity просто удаляется из репозитория

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
@Entity
@Table(name = "client")
@SQLDelete(sql = "update article set deleted=true where id=?") - пробую целеноправленно писать с ошибкам, в данному случае такой таблицы нет
@Where(clause = "deleted = false")
//@SQLDelete(sql = "UPDATE client SE deleted=true WHERE uid1 = ? AND version = ?")
//@FilterDef(
//    name = "deletedClientFilter",
//    parameters = @ParamDef(name = "isDeleted", type = "boolean")
//)
//@Filter(
//    name = "deletedClientFilter",
//    condition = "deleted = :isDeleted"
//)
@Getter
@Setter
public class ClientEntity extends AuditableEntity {}

@Transactional
@SpringBootTest
@ActiveProfiles("test")
class ClientRepositoryTest {

  @Autowired
  private ClientRepository clientRepository;

  @Test
  @DisplayName("testTable = Client")
  void testTable() {
    //Insert
    ClientEntity clientEntity = new ClientEntity();
    clientEntity.setFullName("b745(2lIs-D6");
    clientEntity.setStatus(ClientStatusEnum.ACTIVE);
    ClientEntity clientEntitySave = clientRepository.save(clientEntity);
    //assertEquals(1, clientRepository.findAll()
    //    .size());
    assertEquals(ClientStatusEnum.ACTIVE, clientEntitySave.getStatus());

    //Update
    clientEntity = clientRepository.getById(clientEntitySave.getUid());
    clientEntity.setStatus(ClientStatusEnum.ARCHIVED);
    clientEntitySave = clientRepository.save(clientEntity);
    //assertEquals(1, clientRepository.findAll()
    //    .size());
    assertEquals(ClientStatusEnum.ARCHIVED, clientEntitySave.getStatus());

    //Delete
    clientRepository.delete(clientEntitySave);
    clientEntity = clientRepository.getById(clientEntitySave.getUid());
    //assertEquals(1, clientRepository.findAll()
    //    .size());
    assertEquals(true, clientEntity.isDeleted());
  }

}
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108140
-=Koba=-Entity просто удаляется из репозиторияА как ты это определяешь? Хочешь сказать что вот это возвращает null:
Код: java
1.
    clientEntity = clientRepository.getById(clientEntitySave.getUid());

Как выглядит этот метод getById()?

Почему ты не включишь SQL логирование и не посмотришь какие запросы там шлются?

PS: не очень понимаю зачем усложнять - почему вместо delete() не использовать явный set флага.
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108164
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
-=Koba=-Entity просто удаляется из репозитория
А как ты это определяешь? Хочешь сказать что вот это возвращает null:
Код: java
1.
    clientEntity = clientRepository.getById(clientEntitySave.getUid());

Как выглядит этот метод getById()?

Почему ты не включишь SQL логирование и не посмотришь какие запросы там шлются?

PS: не очень понимаю зачем усложнять - почему вместо delete() не использовать явный set флага.

Логирование выключено

Возвращает не null, а валится по ошибке entity not found
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108183
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-
Логирование выключено
включите. Работайте!
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108199
-=Koba=-
Stanislav Bashkyrtsev
пропущено...
А как ты это определяешь? Хочешь сказать что вот это возвращает null:
Код: java
1.
    clientEntity = clientRepository.getById(clientEntitySave.getUid());

Как выглядит этот метод getById()?

Почему ты не включишь SQL логирование и не посмотришь какие запросы там шлются?

PS: не очень понимаю зачем усложнять - почему вместо delete() не использовать явный set флага.


Логирование выключено

Возвращает не null, а валится по ошибке entity not found
Ну дак включи логирование и посмотри что происходит. Подозреваю что твой @Where("deleted = false") отработал и соответственно запись не нашлась. Т.е. вполне возможно что все работает корректно.
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108320
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=Koba=-
Почему может не отрабатывать аннотация SQLUpdate?
Entity просто удаляется из репозитория

а как может отрабатывать то ,чего нет?
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108327
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
localhost8080,

Вот пусть сам убедится))
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108378
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
localhost8080
-=Koba=-
Почему может не отрабатывать аннотация SQLUpdate?
Entity просто удаляется из репозитория

а как может отрабатывать то ,чего нет?


При удалении я не вижу в логах данного запроса к БД

Код: java
1.
@SQLDelete(sql = "update article set deleted=true where id=?")
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108379
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=Koba=-
localhost8080
пропущено...

а как может отрабатывать то ,чего нет?


При удалении я не вижу в логах данного запроса к БД

Код: java
1.
@SQLDelete(sql = "update article set deleted=true where id=?")



а у тебя есть в бд записи удовлетворяющие вот этому условию
Код: java
1.
@Where(clause = "deleted = false")



может у тебя объект этот инициализируется иначе чем ты предполагаешь

private boolean deleted- вот так будет false
private Boolean deleted -вот так будет null
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108573
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
localhost8080,
Вот если добавить эту строчку, то тест проходит нормально
Почему такое поведение?
Код: java
1.
2.
3.
4.
5.
6.
    clientRepository.delete(clientEntity);
----->    assertEquals(1, clientRepository.findAll()         .size());
    clientEntity = clientRepository.getById(clientEntity.getUid());
    assertEquals(1, clientRepository.findAll()
        .size());
    assertTrue(clientEntity.isDeleted());




Сам тест
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
@DataJpaTest
@Import(AuditConfig.class)
@Transactional
@ActiveProfiles("test")
class ClientRepositoryTest {

  @Autowired
  private ClientRepository clientRepository;

  @Test
  @DisplayName("testTable = Client")
  void testTable() {
    //Insert
    ClientEntity clientEntity = ClientEntity.builder()
        .fullName("b745(2lIs-D6")
        .status(ClientStatusEnum.ACTIVE)
        .build();
    clientRepository.save(clientEntity);
    assertEquals(1, clientRepository.findAll()
        .size());
    assertEquals(ClientStatusEnum.ACTIVE, clientEntity.getStatus());

    //Update
    clientEntity = clientRepository.getById(clientEntity.getUid());
    clientEntity.setStatus(ClientStatusEnum.ARCHIVED);
    clientRepository.save(clientEntity);
    assertEquals(1, clientRepository.findAll()
        .size());
    assertEquals(ClientStatusEnum.ARCHIVED, clientEntity.getStatus());

    //Delete
    clientRepository.delete(clientEntity);
    assertEquals(1, clientRepository.findAll()
        .size());
    clientEntity = clientRepository.getById(clientEntity.getUid());
    assertEquals(1, clientRepository.findAll()
        .size());
    assertTrue(clientEntity.isDeleted());
  }

}
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108577
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
Для начала удали все фильтры кроме фильтра по айди с которым работает хибер.
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108578
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
Сразу предупреждаю что флаг Мы как бы удалили - глупость.
...
Рейтинг: 0 / 0
SQLUpdate не отрабатывает
    #40108581
-=Koba=-
localhost8080,
Вот если добавить эту строчку, то тест проходит нормально
Почему такое поведение?
Код: java
1.
2.
3.
4.
5.
6.
    clientRepository.delete(clientEntity);
----->    assertEquals(1, clientRepository.findAll()         .size());
    clientEntity = clientRepository.getById(clientEntity.getUid());
    assertEquals(1, clientRepository.findAll()
        .size());
    assertTrue(clientEntity.isDeleted());

Поэтому я и просил показать что находится внутри getById(), а там видимо обычный entityManager.find(class, id). Что значит что объект просто берется из сессии без всяких SELECT'ов. И у тебя скорей всего FlushMode.AUTO, и все это приводит к тому что флуша не происходит. А значит в БД вообще ниче не меняется на этот момент.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / SQLUpdate не отрабатывает
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]