我试图使用查询在hibernate中创建一个对象,然后将其保存回表示该类的表.
摘自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>
Run Code Online (Sandbox Code Playgroud)
测试用例的代码片段:
MyClass myClass = (MyClass) session.getNamedQuery("myQuery").list().get(0);
Transaction t = session.beginTransaction();
session.save(myClass);
t.commit();
Run Code Online (Sandbox Code Playgroud)
我的目标是现在应该在表MY_TABLE中有一个新记录,但插入没有发生,我认为这是因为Hibernate不知道该实例没有在db中持久存在.
我试过将查询更改为:
SELECT NULL ID, 'something' VAL from DUAL
Run Code Online (Sandbox Code Playgroud)
但这导致Hibernate没有实例化对象.
那么如何从与该类的持久化实例无关的查询创建一个新的对象实例,并使用它来创建一个持久化的实例?