JOOQ mysql поразрядный

Мы просто переключаемся на использование JOOQ вместо стандартного DAO и прямого SQL, и я пытаюсь преобразовать этот SQL в контекст JOOQ:

products определяется как поле INT (4) в MySQL 5.6.

SELECT DISTINCT f1
FROM table_A WHERE 
    (f1 IS NOT NULL)
    AND (products & 255)
    AND (age <= 180) 
    AND (flag < 1)
ORDER BY f1; 

Версия JOOQ:

context.selectDistinct(TABLE_A.F1).from(TABLE_A).where(TABLE_A.F1.isNotNull())
    .and(TABLE_A.flag.lessthan(UInteger.valueof(1))
    .and(TABLE_A.age.lessthan(UInteger.valueof(180))
.orderBy(TABLE_A.f1);

Что я не могу понять, так это как выполнить побитовую операцию (products & 255).


person awm    schedule 14.11.2013    source источник


Ответы (1)


Вы можете найти некоторую информацию о побитовых операторах / побитовых функциях в соответствующий раздел руководства jOOQ.

Конкретно, используя _ 1_:

DSL.bitAnd(TABLE_A.PRODUCTS, 255);

См. Также соответствующее обсуждение в группе пользователей jOOQ.

person Lukas Eder    schedule 15.11.2013
comment
Почему некоторые функции JOOQ скрыты внутри пакета DSL? - person awm; 15.11.2013
comment
Я не уверен, что ты имеешь в виду? DSL - это класс, содержащий всевозможные функции, которые вы можете статически импортировать в свои классы Java. Другими словами, они совсем не скрыты, они довольно открыты :-) См. Также: jooq.org/doc/3.2/manual/sql-building/dsl. Я думаю, что было бы полезно, если бы побитовые операции также поддерживались в инфиксной нотации. Я посмотрю, что это будет добавлено в jOOQ 3.3: github.com/jOOQ/jOOQ/issues / 2848 - person Lukas Eder; 15.11.2013