2011-10-04 33 views
0

同时选择查询我有以下的PL/SQL查询,执行插入,然后从休眠

INSERT INTO Table(ID,..................) 
VALUES(SEQ.nextval,....................); 
SELECT SEQ.currval ID FROM DUAL; 

我需要使用Hibernate来获得ID。我正在使用以下查询显示错误,

.....getDataSession().createSQLQuery(hQuery).list() 

任何人都可以帮助我。

+2

请阅读有关自动生成的ID的文档。这应该由Hibernate自动处理。不要使用SQL查询:你打败了使用Hibernate的目的。 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/ –

+0

我没有使用任何类。我正在使用createSQLQuery。你可以请更新我的代码,如果有可能或不可能使用createSQLQuery。我在休眠方面非常新颖。希望你能帮助我。 – user960567

+1

不要使用Hibernate作为执行SQL查询的手段。这不是它的目标。如果你想这样做,使用直接的JDBC。如果您想使用Hibernate,请按照预期使用它,方法是定义持久实体并持久化它们。 –

回答

1

创建新对象并使用session.save()方法保存它将返回此对象ID。

Object object = new Object(); 
    //add object properties 
    object.setXXX(value); 
    //now save the object 
    String id =(String)getDataSession().save(object); 

希望它有帮助。

+0

我正在使用createSQLQuery。你能告诉我我应该在哪里放置我的sql吗?我没有使用任何类 – user960567

+0

请阅读@JB Nizen评论他是100%正确:)在这种情况下不要使用Hibernate这是ORM应用程序。 –