我使用带注解的Hibernate。我需要使用一个方法将对象插入到数据库中,该方法需要一个我需要计算的参数,为此我用途:
SQLQuery sqlQuery = getSession().createSQLQuery(queryString);
sqlQuery.executeUpdate();
字符串
queryString包含:
INSERT INTO TABLE(ID, NUMBER) VALUES (SEC_TABLE.NEXTVAL, 549)
型
对象被插入到数据库中,但是当我试图获取id时,我得到一个空值。
我该怎么办?
当我使用getHibernateTemplate().update(obj);
时,我在获取id时没有问题,但我需要自定义sql插入。
谢啦,谢啦
5条答案
按热度按时间xam8gpfp1#
也许我没有得到所有的东西,但是你有没有考虑过通过
Session#connection()
(可能在Hibernate 4中被删除)或新的Session#doWork()
API使用原始JDBC?如果你需要一个例子,这里是你如何使用它:字符串
h9vpoimq2#
你的问题有点不清楚,但根据我的理解,我认为你应该首先做一个准备好的语句,读取序列的下一个值,并在创建insert语句时使用该id。此外,请确保提交事务,并可能刷新会话。
作为一个旁注,如果你使用带注解的Hibernate,当Map一个表到一个类时,你可以提供id生成器作为一个序列。通过这种方式,您不必编写jdbc代码来插入实体,只需编写普通的hibernate代码即可。getJdbcTemplate().保存().
holgip5t3#
以下是使用注解的序列示例:
字符串
另外,add方法应该看起来像这样:
型
这些方法来自一个类,而不是从Spring扩展Hibernate DaoSupport,这就是它们如何获得hibernate模板的。
希望这对你有用。
ndasle7k4#
现在我有这个:
字符串
查询为:
型
我使用的方法:
型
问题是,当我使用HibernateDaoSupport的方法时,当我使用.persist(object)时,我在对象中有id,但当我使用此方法(加密字段值)时,我试图获得id,但它是null。对象已正确插入数据库。
au9on6nz5#
字符串