Задать параметры в запросе

Я пытаюсь задать запрос с большим количеством параметров.

для запроса с 1 параметром он работает нормально:

//**
    List<?> list = null;
    String query = String.format("from %s where %s = :%s ", a, uniqueField[0], uniqueField[0]);
    list = s.createQuery(query).setParameter(uniqueField[0], arg0.getSsn()).list();

как я могу сделать то же самое с этим запросом:

List<?> list = null;
String query = String.format("from %s where %s = :%s and %s = :%s ", a, uniqueField[0], uniqueField[0], uniqueField[1], uniqueField[1]);
// list = s.createQuery(query)... ?

Спасибо за любые советы..


person FuSsA    schedule 11.05.2016    source источник
comment
Разве вы не должны использовать API базы данных?   -  person K.Nicholas    schedule 11.05.2016
comment
@Николас, я использую Hibernate   -  person FuSsA    schedule 11.05.2016
comment
Просто назовите параметры: :param1, :param2. Затем q.setParameter(:param1, value1).setParam(:param2, value2)...   -  person K.Nicholas    schedule 11.05.2016
comment
@Nicholas, можешь опубликовать это как ответ, чтобы я мог его зафиксировать: p   -  person FuSsA    schedule 12.05.2016


Ответы (1)


При использовании запроса вы можете использовать либо именованные параметры, либо позиционные параметры. Именованные параметры довольно просты, я не уверен, каковы последствия для производительности:

Итак, просто назовите параметры: ":param1", ":param2". Затем q.setParameter(":param1", value1).setParam(":param2", value2).

Ссылка: В JPA какой тип параметра лучше использовать «positional/named»?

person K.Nicholas    schedule 11.05.2016