Я пытаюсь создать объект в спящем режиме с помощью запроса, который затем будет сохранен обратно в таблицу, представляющую класс.
Выдержка из файла hbm.xml:
<class name="MyClass" table="MY_TABLE">
<id column="ID" name="ID">
<generator class="sequence">
<param name="sequence">MY_SEQ</param>
</generator>
</id>
<property column="VAL" name="val" type="string"/>
</class>
<sql-query name="myQuery">
<return class="MyClass"/>
SELECT MY_SEQ.nextval ID, 'something' VAL from DUAL
</sql-query>
Фрагмент кода из контрольного примера:
MyClass myClass = (MyClass) session.getNamedQuery("myQuery").list().get(0);
Transaction t = session.beginTransaction();
session.save(myClass);
t.commit();
Моя цель состоит в том, чтобы теперь в таблице MY_TABLE должна быть новая запись, но вставка не происходит, я предполагаю, что это связано с тем, что Hibernateзнаю, что экземпляр не был сохранен в БД.
Я попытался изменить запрос следующим образом:
SELECT NULL ID, 'something' VAL from DUAL
Но это приводит к тому, что Hibernate не создает объект.
Итак, как я могу создать новый экземпляр объекта из запроса, который не связан с постоянным экземпляром класса, и использовать его для создания постоянного экземпляра?