powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Выборка энтити с не валидным id записи Hibernate
13 сообщений из 13, страница 1 из 1
Выборка энтити с не валидным id записи Hibernate
    #39700022
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@Override
public Category findById(Client client, Long id) {
    CriteriaBuilder builder = sessionFactory.getCurrentSession().getCriteriaBuilder();

    CriteriaQuery<Category> query = builder.createQuery(Category.class);

    Root<Category> root = query.from(Category.class);

    query.where(builder.equal(root.get("id"), id))
            .where(builder.and(builder.equal(root.get("client"), client)));

    query.select(root);

    return sessionFactory.getCurrentSession().createQuery(query).uniqueResultOptional().orElse(null);
}



Если я передаю id = null то находит первую запись, а не возвращает null .

Почему?
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700025
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
какая sql строка отпрааляетсч в итоге на мервер субд? с ожешь показать?
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700047
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эту задачу проще обсудить на примерах и решить в терминах SQL и потом аккуратно перенести в criteria api.

Я бы еще проверил логгированием во что трансформируется проверка на null. Там есть нюансы вобщем то. Не через знак равно...
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700048
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Log? Не, никогда не слышал о таком. А зачем?
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700051
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopПочему?очевидно: первый where перетирается вторым
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700054
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
не используй прокладки и будет тебе счастье!
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700059
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczSQL Log? Не, никогда не слышал о таком. А зачем?

Вот:
Код: sql
1.
select category0_.id as id1_0_0_, category0_.created as created2_0_0_, category0_.clientId as clientId4_0_0_, category0_.name as name3_0_0_, client1_.id as id1_1_1_, client1_.created as created2_1_1_, client1_.admin as admin3_1_1_, client1_.email as email4_1_1_, client1_.firstName as firstNam5_1_1_, client1_.lastName as lastName6_1_1_, client1_.password as password7_1_1_ from category category0_ inner join client client1_ on category0_.clientId=client1_.id where category0_.id=?



Чем-то помогло?
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700060
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, показал выше
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700061
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловочевидно: первый where перетирается вторым

Именно!!!

После того как создал тему написал так:

Код: java
1.
query.select(root).where(builder.and(builder.equal(root.get("id"), id), builder.equal(root.get("client"), client)));



И все заработало!
Спасибо!
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700065
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopBlazkowiczSQL Log? Не, никогда не слышал о таком. А зачем?

Вот:
Код: sql
1.
select category0_.id as id1_0_0_, category0_.created as created2_0_0_, category0_.clientId as clientId4_0_0_, category0_.name as name3_0_0_, client1_.id as id1_1_1_, client1_.created as created2_1_1_, client1_.admin as admin3_1_1_, client1_.email as email4_1_1_, client1_.firstName as firstNam5_1_1_, client1_.lastName as lastName6_1_1_, client1_.password as password7_1_1_ from category category0_ inner join client client1_ on category0_.clientId=client1_.id where category0_.id=?



Чем-то помогло?
Вот еслиб с самого начала посмотрел предикат where то и вопросов бы не было.
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700073
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

ну если знаешь что при null должен вернуть null - может не стоит лишний раз дёргать базу?
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700087
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
в том и дело что не знаю. Там может быть и null, а может и не быть null. Тут суть в том что есть панель, у этой панели может быть категория, а может не быть. Следовательно если человек выбрал без категории то мне нужно это как-то проверить и записать в сущность.
...
Рейтинг: 0 / 0
Выборка энтити с не валидным id записи Hibernate
    #39700090
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopв том и дело что не знаю. Там может быть и null, а может и не быть null. Тут суть в том что есть панель, у этой панели может быть категория, а может не быть. Следовательно если человек выбрал без категории то мне нужно это как-то проверить и записать в сущность.поле с именем id подразумевает, что это уникальное поле, проиндексированное и , как правило, с автоинкременом.
такое поле служи для идентификации любой записи в таблице -> оно не может быть равным null.
это условность, но всё же....
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Выборка энтити с не валидным id записи Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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