小编stj*_*roe的帖子

使用sql查询在hibernate中创建一个新的对象实例

我试图使用查询在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没有实例化对象.

那么如何从与该类的持久化实例无关的查询创建一个新的对象实例,并使用它来创建一个持久化的实例?

java orm hibernate

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

hibernate ×1

java ×1

orm ×1