Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何执行本机查询并获得反馈?_Java_Sql_Spring_Hibernate_Jdbc - Fatal编程技术网

Java 如何执行本机查询并获得反馈?

Java 如何执行本机查询并获得反馈?,java,sql,spring,hibernate,jdbc,Java,Sql,Spring,Hibernate,Jdbc,如何在java中执行本机查询(创建表),同时获取有关is操作是否成功的信息。我尝试过的每一种方法都是一样的。查询正在工作,但我得到了关于“该查询有多糟糕”的错误,但正如我所说的,它工作正常 try{ session.createNativeQuery("create table test (id number)").getResultList() } catch(Exception e){ // I am getting error "Could not extract re

如何在java中执行本机查询(创建表),同时获取有关is操作是否成功的信息。我尝试过的每一种方法都是一样的。查询正在工作,但我得到了关于“该查询有多糟糕”的错误,但正如我所说的,它工作正常

try{
      session.createNativeQuery("create table test (id number)").getResultList()
}
catch(Exception e){
    // I am getting error "Could not extract result set metadata"
    // Is there any way to execute getResultList() only if operation was select?
}
总之,我需要执行CRUD。
1.如果执行了“选择”,我需要结果列表。
2.如果“创建”,我不想执行getResultSet() 3.如果执行了“插入”,我需要有关受影响行数的信息。
等等
最重要的是,我总是需要关于最终错误的信息!若查询缺少语法或其他信息,我总是需要获取这些信息


伙计们,有人能帮我吗?几天来我一直在努力解决这个问题…

一个使用本机查询的简单示例。您可以根据
受影响的行
值确定查询结果

        EntityTransaction entityTransaction;
        EntityManager entityManager;

        try
        {
            entityTransaction = entityManager.getTransaction();

            entityTransaction.begin();

            // rowsUpdated - The number of "affected rows".
            int rowsUpdated = entityManager.createNativeQuery("create table test (id nubmer)").executeUpdate();

            entityTransaction.commit();
        }
        catch (HibernateException | IllegalStateException e)
        {
            // handle exceptions

            if (entityTransaction != null && entityTransaction.isActive())
            {
                entityTransaction.rollback();
            }
        }

我们无法对您未发布的代码和错误发表评论。使用createNativeQuery的尝试无效,因为您创建了一个查询,但从未执行过。您尝试的prepareStatement无法满足您的要求,因为。。。您忽略它返回的内容,并且没有按照javadoc中的说明来获得结果:。使用
executeUpdate()
会更简单,但也不需要忽略结果。读取javadoc。执行createNativeQuery()。在那一行之后,我的数据库里有所有的东西。执行了,但这永远不会给我任何反馈。不,不是。不在你发布的代码中。如果您的实际代码不同,并且您希望我们解释您的实际代码有什么问题以及如何修复,那么请发布您的实际代码。您是对的,很抱歉,这是一个糟糕的示例。。。但是关于元数据的“错误”仍然困扰着我。。。当我执行诸如“创建”之类的查询时,我不想得到对象的结果集。getResultList()用于。。。从SELECT查询中获取结果列表。你不想那样做。使用executeUpdate()。非常感谢,但我对最后一个if有疑问。编译器什么时候会进入那个if?这是一个非常简单的例子,做catch-all-exception并不好。我用具体的例外情况来代替。最后一个
if
检查是在
entityTransaction
null
时避免NullPointerException,并在回滚事务之前确保事务处于活动状态。在这种情况下,当代码在
try
块中抛出
hibernateeexception
illegalstateeexception
时,将执行
if