Hibernate - Пользовательская вставка в базу данных - PullRequest
12 голосов
/ 14 сентября 2010

Я пишу этот пост, чтобы знать, если кто-то знает, как это сделать:

Я хочу сделать эту вставку:

INSERT INTO TABLA (CAMPO1, CAMPO2) VALUES (?, crypt(?,'cdp'))

Crypt - это функция, хранящаяся в моей базе данных, и вставка, которую я хотел бы сделать в своем коде. На самом деле, когда я хочу вставить что-то в базу данных, я использую:

getHibernateTemplate().persist(obj);

Но я хочу сделать «пользовательскую» вставку, потому что мне нужно использовать эту функцию.

Я использую hibernate + аннотации:

@org.hibernate.annotations.SQLInsert (sql = "INSERT INTO TABLA (CAMPO1, CAMPO2) VALUES (?, crypt(?,'cdp'))")

Но ключ 'cdp' должен быть извлечен из файла, поэтому это решение не работает для меня.

Я хочу использовать метод в моем коде для выполнения запроса SQL (запрос INSERT)

Ответы [ 2 ]

20 голосов
/ 15 сентября 2010

Вот решение:

Query query = getSession().createSQLQuery("INSERT INTO TABLA (CAMPO1, CAMPO2) VALUES (:valor1, encripta(:valor2, :key))");
query.setParameter("valor1", valor1);
query.setParameter("valor2", valor2);
query.setParameter("key", key);
query.executeUpdate();
18 голосов
/ 17 марта 2014

Как упоминал Натан Фегер, названные параметры намного чище и безопаснее.В этом случае оператор может быть выполнен со следующим кодом:

Query query = getSession().createSQLQuery("INSERT INTO TABLA (CAMPO1, CAMPO2) VALUES (:valor1, encripta(:valor2, :key))");
query.setParameter("valor1", valor1);
query.setParameter("valor2", valor2);
query.setParameter("key", key);
query.executeUpdate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...