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();
}