#java #sql #oracle #hibernate
#java #sql #Oracle #режим гибернации
Вопрос:
У меня есть следующий запрос pl / sql,
INSERT INTO Table(ID,..................)
VALUES(SEQ.nextval,....................);
SELECT SEQ.currval ID FROM DUAL;
Мне нужно получить идентификатор с помощью режима гибернации. Я использую следующий запрос, который показывает ошибку,
.....getDataSession().createSQLQuery(hQuery).list()
Кто-нибудь мне поможет.
Комментарии:
1. Прочитайте документацию об автоматически сгенерированных идентификаторах. Это должно быть обработано автоматически с помощью режима гибернации. Не используйте SQL-запросы: вы нарушаете цель использования гибернации. docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single
2. Я не использую какой-либо класс. Я использую CreateSQLQuery. Не могли бы вы обновить мой код, если возможно, или это невозможно с помощью CreateSQLQuery. Я очень новичок в гибернации. Надеюсь, вы мне поможете.
3. Не используйте режим гибернации как средство выполнения SQL-запросов. Это не его цель. Если вы хотите это сделать, используйте прямой JDBC. Если вы хотите использовать режим гибернации, используйте его по назначению, определяя постоянные объекты и сохраняя их.
4. Хорошо, будет ли это означать, что SEQ.currval будет возвращен автоматически? Можете ли вы предоставить мне ссылку на идентификаторы автоматического генерирования. Спасибо, кстати.
5. Я уже это сделал. Но здесь это повторяется: docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single
Ответ №1:
Создайте новый объект и сохраните его, используя метод session.save(), он вернет этот идентификатор объекта.
Object object = new Object();
//add object properties
object.setXXX(value);
//now save the object
String id =(String)getDataSession().save(object);
Надеюсь, это поможет.
Комментарии:
1. Я использую CreateSQLQuery. Не могли бы вы сказать мне, где я должен разместить свой sql? Я не использую какой-либо класс
2. Пожалуйста, прочитайте комментарий @JB Nizen, он на 100% прав 🙂 не используйте режим гибернации в этом случае, это приложение ORM.