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