Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / SQLUpdate не отрабатывает / 13 сообщений из 13, страница 1 из 1
29.10.2021, 17:02
    #40108129
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLUpdate не отрабатывает
Почему может не отрабатывать аннотация 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
29.10.2021, 17:28
    #40108140
SQLUpdate не отрабатывает
-=Koba=-Entity просто удаляется из репозиторияА как ты это определяешь? Хочешь сказать что вот это возвращает null:
Код: java
1.
    clientEntity = clientRepository.getById(clientEntitySave.getUid());

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

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

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

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

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

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

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

Возвращает не null, а валится по ошибке entity not found
...
Рейтинг: 0 / 0
29.10.2021, 19:28
    #40108183
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLUpdate не отрабатывает
-=Koba=-
Логирование выключено
включите. Работайте!
...
Рейтинг: 0 / 0
29.10.2021, 21:24
    #40108199
SQLUpdate не отрабатывает
-=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
30.10.2021, 21:35
    #40108320
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLUpdate не отрабатывает
-=Koba=-
Почему может не отрабатывать аннотация SQLUpdate?
Entity просто удаляется из репозитория

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

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

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


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

Код: java
1.
@SQLDelete(sql = "update article set deleted=true where id=?")
...
Рейтинг: 0 / 0
31.10.2021, 10:57
    #40108379
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLUpdate не отрабатывает
-=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
01.11.2021, 12:17
    #40108573
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLUpdate не отрабатывает
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
01.11.2021, 12:26
    #40108577
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLUpdate не отрабатывает
-=Koba=-,
Для начала удали все фильтры кроме фильтра по айди с которым работает хибер.
...
Рейтинг: 0 / 0
01.11.2021, 12:27
    #40108578
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLUpdate не отрабатывает
-=Koba=-,
Сразу предупреждаю что флаг Мы как бы удалили - глупость.
...
Рейтинг: 0 / 0
01.11.2021, 12:50
    #40108581
SQLUpdate не отрабатывает
-=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
Форумы / Java [игнор отключен] [закрыт для гостей] / SQLUpdate не отрабатывает / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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