Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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
javax.persistence.PersistenceException:org.hibernate.exception.genericjdbception:无法使用executeQuery()发出数据操作语句_Java_Jpa_Jpql - Fatal编程技术网

javax.persistence.PersistenceException:org.hibernate.exception.genericjdbception:无法使用executeQuery()发出数据操作语句

javax.persistence.PersistenceException:org.hibernate.exception.genericjdbception:无法使用executeQuery()发出数据操作语句,java,jpa,jpql,Java,Jpa,Jpql,我在数据库中插入数据是好的。问题是在插入数据后,我试图获取上次插入的数据主键列。但我不知道如何解决这个问题 注意:我正在使用jpql,谢谢 public void insertData(String hcpHceId) { EntityManager em = getEntityManager(); em.getTransaction().begin(); // Query query = em.createNativeQuery("I

我在数据库中插入数据是好的。问题是在插入数据后,我试图获取上次插入的数据主键列。但我不知道如何解决这个问题

注意:我正在使用jpql,谢谢

public void insertData(String hcpHceId) {
        EntityManager em = getEntityManager();

            em.getTransaction().begin();
//          Query query = em.createNativeQuery("INSERT INTO mdm_id (hcp_hce_id)  VALUES(:id)" );
            Query query = em.createNativeQuery("INSERT INTO mdm_id (hcp_hce_id)  VALUES(?)");
            query.setParameter(1, hcpHceId);
            query.executeUpdate(); // Successfully inserted data
            List list = query.setMaxResults(1).getResultList();  // Error line
            em.getTransaction().commit();

        } catch (Exception error) {
            error.printStackTrace();
            logger.error(error.getMessage());
        } finally {
            em.close();;
        }


}


您正在尝试从同一执行查询检索列表。查询是一个不可变的对象。必须使用适当的select语句创建新查询,以便能够从数据库检索数据

在executeUpdate之后,使用v.g.创建新查询(因为您没有使用本机sql显示实体图):


您正在尝试从同一执行查询检索列表。查询是一个不可变的对象。必须使用适当的select语句创建新查询,以便能够从数据库检索数据

在executeUpdate之后,使用v.g.创建新查询(因为您没有使用本机sql显示实体图):


当您的查询仍然是一个更新语句时,您希望如何得到结果?我不理解您所说的内容。当您的查询仍然是一个更新语句时,您希望如何得到结果?我不理解您所说的内容
Query retQuery = em.createNativeQuery("SELECT hcp_hce_id FROM mdm_id LIMIT 1");
String id = (String) retQuery.getSingleResult();
assert(id == hcpHceId);