Одновременное выполнение запросов Insert и Select из гибернации

#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.