0
我有这样的代码:热点使用JPQL更新一些记录?
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();
}
而且我triyng更新列保存数据。这是我的班WitSave2:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.dke.ps.Tables;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author michal
*/
@Entity
@Table(name = "with_save2")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "WithSave2.findAll", query = "SELECT w FROM WithSave2 w")
, @NamedQuery(name = "WithSave2.findBySaveid", query = "SELECT w FROM WithSave2 w WHERE w.saveid = :saveid")
, @NamedQuery(name = "WithSave2.findByLogin", query = "SELECT w FROM WithSave2 w WHERE w.login = :login")
, @NamedQuery(name = "WithSave2.findBySavedata", query = "SELECT w FROM WithSave2 w WHERE w.savedata = :savedata")})
public class WithSave2 implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "saveid")
@Id
private Integer saveid;
@Column(name = "login")
private String login;
@Column(name = "savedata")
private String savedata;
public WithSave2() {
}
public Integer getSaveid() {
return saveid;
}
public void setSaveid(Integer saveid) {
this.saveid = saveid;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSavedata() {
return savedata;
}
public void setSavedata(String savedata) {
this.savedata = savedata;
}
}
是否正确的查询来更新列?我不太确定,特别是这条线:
query.setParameter("login", user);
query.setParameter("save", saveData);
有人可以帮我吗?非常感谢:)
你要更新,但执行的是选择..你也开始交易,但不承诺.. –
是的,这就是正确的:)我纠正它(在原来的职位)。如果我试图更新列,它说:异常说明:语法错误解析[更新WithSave2 SET savedata WHERE u.login =:user]。 [30,30]必须指定等号。 – Aaka