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

Код: 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
09.09.2018, 04:16
    #39700025
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
Tsyklop,
какая sql строка отпрааляетсч в итоге на мервер субд? с ожешь показать?
...
Рейтинг: 0 / 0
09.09.2018, 10:09
    #39700047
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
Эту задачу проще обсудить на примерах и решить в терминах SQL и потом аккуратно перенести в criteria api.

Я бы еще проверил логгированием во что трансформируется проверка на null. Там есть нюансы вобщем то. Не через знак равно...
...
Рейтинг: 0 / 0
09.09.2018, 10:13
    #39700048
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
SQL Log? Не, никогда не слышал о таком. А зачем?
...
Рейтинг: 0 / 0
09.09.2018, 10:16
    #39700051
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
TsyklopПочему?очевидно: первый where перетирается вторым
...
Рейтинг: 0 / 0
09.09.2018, 10:38
    #39700054
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
Tsyklop,
не используй прокладки и будет тебе счастье!
...
Рейтинг: 0 / 0
09.09.2018, 11:33
    #39700059
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
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
09.09.2018, 11:34
    #39700060
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
вадя, показал выше
...
Рейтинг: 0 / 0
09.09.2018, 11:35
    #39700061
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
Андрей Панфиловочевидно: первый where перетирается вторым

Именно!!!

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

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



И все заработало!
Спасибо!
...
Рейтинг: 0 / 0
09.09.2018, 11:48
    #39700065
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
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
09.09.2018, 12:43
    #39700073
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка энтити с не валидным id записи Hibernate
Tsyklop,

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


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