Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 使用JPQL更新某些记录很热吗?_Java_Jpa - Fatal编程技术网

Java 使用JPQL更新某些记录很热吗?

Java 使用JPQL更新某些记录很热吗?,java,jpa,Java,Jpa,我有以下代码: public void uploadSaveGame(User user, String saveData) { EntityTransaction entr=em.getTransaction(); entr.begin(); TypedQuery<Save> query = em.createQuery("UPDATE WithSave2 SET savedata WHERE u.login = :user", Save.class

我有以下代码:

public void uploadSaveGame(User user, String saveData)
{
    EntityTransaction entr=em.getTransaction();
        entr.begin();
    TypedQuery<Save> query = em.createQuery("UPDATE WithSave2 SET savedata WHERE u.login = :user", Save.class);              
    query.setParameter("login", user);
    query.setParameter("save", saveData);
    em.getTransaction().commit();
}
这是更新列的正确查询吗?我不太确定,尤其是这一行:

query.setParameter("login", user);
        query.setParameter("save", saveData); 

有人能帮我吗?非常感谢:

给你几件事:

必须为要更改的列指定一个新值,否则不能使用更新的语句 您必须运行查询。。不仅定义它 当您使用手动事务时,最好添加一点异常管理,以防万一。 执行批量更新时,不需要TypedQuery

EntityTransaction entr=em.getTransaction();
entr.begin();

try{
  Query query = em.createQuery("UPDATE WithSave2 
    SET savedata = :saveData WHERE u.login = :user", Save.class);              
  query.setParameter("login", user);
  query.setParameter("save", saveData);

  query.executeUpdate(); 

  entr.commit();
}catch(Exception e){
  entr.rollback();
}

您正在尝试更新,但正在执行选择。。你也开始交易,但不提交..是的,没错:我在原来的帖子中更正了它。如果我试图更新该列,它会显示:异常描述:语法错误解析[update with save2 SET savedata WHERE u.login=:user]。[30,30]必须指定等号。谢谢您的回答。entr.commit;关闭连接?
EntityTransaction entr=em.getTransaction();
entr.begin();

try{
  Query query = em.createQuery("UPDATE WithSave2 
    SET savedata = :saveData WHERE u.login = :user", Save.class);              
  query.setParameter("login", user);
  query.setParameter("save", saveData);

  query.executeUpdate(); 

  entr.commit();
}catch(Exception e){
  entr.rollback();
}