我在网上看到一个教程,显示您可以在 Hibernate 中执行类似的删除和更新操作:
Query query = session.createQuery("delete Stock where stockCode = :stockCode");
query.setParameter("stockCode", "7277");
int result = query.executeUpdate();
在同一个教程中,我遇到了用于插入的代码:
Query query = session.createQuery("insert into Stock(stock_code, stock_name)" +
"select stock_code, stock_name from backup_stock");
int result = query.executeUpdate();
我的问题是,是否可以通过使用 setParameter
来执行类似于教程中的删除示例的操作,但对于插入方法?我尝试了类似的操作并收到错误:
Query q = session.createQuery("insert into test(:testname)");
q.setParameter("testname", "tester");
该错误与属性有关。我使用上述代码的原因之一是因为
int result = query.executeUpdate()
它可以返回一个结果来验证我是否通过SQL命令成功插入。
最佳答案
第一件事:
setParameter
已为 HQL 查询中的参数创建,而不是字段名称。
第二件事:
您的请求:insert into test(:testname)
似乎不完整,它应该类似于 insert into [TABLE_NAME]([FIELD_NAME],...) values ([VALUE],...)
并且在这种情况下,您应该使用 SQL 查询:
createSQLQueries
。为什么需要使查询如此动态?
插入数据库并保存会更好:
session.save(youHibernateObject);
与你的HibernateObject 是一个用hibernate 模型映射模式映射的对象。祝你好运。
关于java hibernate 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572256/