gpt4 book ai didi

java - hibernate上传数据库的问题

转载 作者:行者123 更新时间:2023-12-02 09:22:34 25 4
gpt4 key购买 nike

此数据库更新代码在 JDBC 中运行时工作正常,但当我尝试在 hibernate 中运行时出现此错误:线程“AWT-EventQueue-0”中出现异常 java.lang.IllegalArgumentException:位置参数不存在:查询中的 5:UPDATE uposlenik SET ime=?,prezime=?,adresa=?,plata= ?哪里 id= ?

我尝试以多种方式更改查询,但每次都会出现一些错误,如果没有出现错误,则不会更新

session = Sesija.kreirajSesiju();
Transaction tr = session.beginTransaction();
SQLQuery query=session.createSQLQuery ("UPDATE uposlenik SET ime=?,prezime=?,adresa=?,plata=? WHERE id= ?");
query.setString(1, jText_Ime.getText());
query.setString(2, jText_Prezime.getText());
query.setString(3, jText_Adresa.getText());
query.setString(4, jText_Plata.getText());
query.setString(5, jText_id.getText());


query.executeUpdate();
tr.commit();
//
session.close();

最佳答案

参数位置是从零开始的,这意味着您必须从零开始参数位置:

SQLQuery query=session.createSQLQuery ("UPDATE uposlenik SET ime=?,prezime=?,adresa=?,plata=? WHERE id= ?");
query.setString(0, jText_Ime.getText());
query.setString(1, jText_Prezime.getText());
query.setString(2, jText_Adresa.getText());
query.setString(3, jText_Plata.getText());
query.setString(4, jText_id.getText());

顺便说一句,在 Hibernate 中更新记录的最佳实践是获取要更新的对象实例,然后通过调用其方法来更新对象状态,而不是手动编写 UPDATE SQL。还可以考虑使用 JPA API(即 EntityManager),而不是 native Hibernate API(即 Session)。仅将 EntityManager 解包到 Session 如果 JPA 无法完成某些操作,则使用 Hibernate 特定功能。简而言之,最佳实践代码应该如下所示:

 EntityTransaction tr = entityManager.getTransaction();
tr.begin();

Uposlenik uposlenik = entityManager.find(Uposlenik.class, 1);
if(uposlenik == null){
throw new RuntimeException("The record does not exist");
tr.rollback();
}
uposlenik.updatePrice(123);
......

tr.commit();

关于java - hibernate上传数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58582051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com