Создание экземпляра jooq Field<> по имени

Я пытаюсь использовать jOOQ для создания SQL-запросов в каком-то универсальном коде. Я не заинтересован в использовании jOOQ для выполнения этих запросов или изучения результатов. Кроме того, этот код является общим, поэтому я не могу использовать генерацию кода jOOQ.

Мне удалось выяснить это:

List<org.jooq.Field<?>> fields = new ArrayList<org.jooq.Field<?>>();
Field<?> field = Factory.field("somefield");
fields.add(field);
field = Factory.field("someotherfield");
fields.add(field);

Field<Object> fieldPK = Factory.field("somePKField"); 
Condition condition = fieldPK.equal(123);

Factory factory = new Factory(connection, SQLDialect.POSTGRES);
SelectFinalStep step = factory.select(fields).from("sometable").where(condition);
String query = step.getQuery().getSQL(true);

Но Factory.field()и from()используют общий SQL, а не фактические имена таблиц или полей, поэтому нет кавычек (даже при использовании RenderNameStyle.QUOTED )и без защиты от SQL-инъекций.

Есть ли способ создать поле или таблицу, которые знают свои имена? В идеале я мог бы указать поле как по его имени, так и по его родительской таблице, а jOOQ построил бы для меня строку "sometable"."somefield".

7
задан murrayc 21 April 2012 в 23:39
поделиться