javax.persistence.PersistenceException:org.hibernate.exception.genericjdbception:无法使用executeQuery()发出数据操作语句
我在数据库中插入数据是好的。问题是在插入数据后,我试图获取上次插入的数据主键列。但我不知道如何解决这个问题 注意:我正在使用jpql,谢谢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
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);