java hibernate插入

java hibernate插入,java,hibernate,insert,Java,Hibernate,Insert,我在网上看到了一个教程,其中显示您可以在Hibernate中执行类似的删除和更新操作: Query query = session.createQuery("delete Stock where stockCode = :stockCode"); query.setParameter("stockCode", "7277"); int result = query.executeUpdate(); 在同一教程中,我遇到了以下插入代码: Query query = session.createQ

我在网上看到了一个教程,其中显示您可以在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
,像本教程中的delete示例那样执行插入方法?我尝试了类似的方法,但出现了一个错误:

Query q = session.createQuery("insert into test(:testname)");
q.setParameter("testname", "tester");
错误是关于属性的。我使用上述代码的原因之一是

 int result =  query.executeUpdate()
它可以返回一个结果,以验证是否通过SQL命令成功插入。

首先:

设置参数

已为HQL查询中的参数而不是字段名创建

第二件事:

您的请求:
insert-into-test(:testname)
似乎不完整,它应该类似于
insert-into[TABLE\u-NAME]([FIELD\u-NAME],…)值([VALUE],…)
,在这种情况下,您应该使用SQL查询:

createSQLQueries

见:

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

如果保存,则插入数据库会更好:

session.save(youHibernateObject);
使用youHibernateObject,使用hibernate模型映射架构映射的对象。祝你好运。

第一件事:

设置参数

已为HQL查询中的参数而不是字段名创建

第二件事:

您的请求:
insert-into-test(:testname)
似乎不完整,它应该类似于
insert-into[TABLE\u-NAME]([FIELD\u-NAME],…)值([VALUE],…)
,在这种情况下,您应该使用SQL查询:

createSQLQueries

见:

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

如果保存,则插入数据库会更好:

session.save(youHibernateObject);

使用youHibernateObject,使用hibernate模型映射架构映射的对象。祝你好运。

sql语法可能有错误

首先是insert语句的SQL语法:

insert into <table_name> (col1, col2, col3) 
values ('1', 'second value', 'third value')
因为您希望test_name的值是可配置的,所以您可以编写如下代码:

Query q = session.createQuery("insert into com.yourpackage.Test (test_name) values (:testname)");
q.setParameter("testname", "tester");
int result =  query.executeUpdate()
其中com.yourpackage.Test是POJO实体类

另一方面,我不建议像这样使用hibernate。 最好使用save()方法:

要验证一切正常,请编写一个集成或JUnit测试

看看这个模式:

实施它,到处玩


祝您好运

您的sql语法可能有错误

首先是insert语句的SQL语法:

insert into <table_name> (col1, col2, col3) 
values ('1', 'second value', 'third value')
因为您希望test_name的值是可配置的,所以您可以编写如下代码:

Query q = session.createQuery("insert into com.yourpackage.Test (test_name) values (:testname)");
q.setParameter("testname", "tester");
int result =  query.executeUpdate()
其中com.yourpackage.Test是POJO实体类

另一方面,我不建议像这样使用hibernate。 最好使用save()方法:

要验证一切正常,请编写一个集成或JUnit测试

看看这个模式:

实施它,到处玩


祝你好运

请在Query.executeUpdate()中使用EntityManager.save()


executeUpdate返回更改的行数,并将返回一个持久性异常,但您不会被迫捕获它,并且可能会导致错误异常

请使用EntityManager.save()插入Query.executeUpdate()中

executeUpdate返回更改的行数,并将返回一个持久性异常,但您不会被迫捕获它,它可能会导致错误的异常