java hibernate 插入

标签 java hibernate insert

我在网上看到一个教程,显示您可以在 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

参见:http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html#createSQLQuery(java.lang.String)

。为什么需要使查询如此动态?

插入数据库并保存会更好:

session.save(youHibernateObject);

与你的HibernateObject 是一个用hibernate 模型映射模式映射的对象。祝你好运。

关于java hibernate 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572256/

相关文章:

java - 如何使用数组将实例化对象用作方法的参数

java - 如何仅在 java 日期对象中更改月份?

hibernate - Spring/Hibernate @Transactional - 在它应该之前关闭 session

java - org.hibernate.dialect.OracleDialect 不支持身份 key 生成

mysql - 触发 MySQL 不工作

java - 通过 telnet.exe 与 Java 服务器套接字通信

java - 一个方法依赖于类中的另一个方法

java - 无法弄清楚如何 <s :select>

sql - SQL:使用SELECT将数据插入带有额外列的表中

java - Eclipselink 合并/保留连接的对象