org.hibernate.exception.SQLGrammarException:无法提取ResultSet&

时间:2018-02-10 16:59:38

标签: java hibernate

我正在通过对话框尝试更新标记。但它显示错误。

这是我的名为Student的POJO类,我为此创建了一个表来更新标记。

@Entity
public class Student 
{
    @Id
    private int sid;
    @Column(length=10)
    private String sname;
    private int marks;
    @Version
    private int verson;
    public int getSid() {
        return sid;
    }
    public void setSid(int sid) {
        this.sid = sid;
    }
    public String getsname() {
        return sname;
    }
    public void setsname(String sName) {
        this.sname = sName;
    }
    public int getMarks() {
        return marks;
    }
    public void setMarks(int marks) {
        this.marks = marks;
    }
    public int getVerson() {
        return verson;
    }
    public void setVerson(int verson) {
        this.verson = verson;
    }

}

这是我的主要课程

public class ClientOfUser1 {

    public static void main(String[] args) 
    {
    Configuration conf=new Configuration().configure("hibernate.cfg.xml");
    ServiceRegistry registry=new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build();
    SessionFactory factory=conf.buildSessionFactory(registry);
    Session session=factory.openSession();
    Transaction tx=session.beginTransaction();
    Student s=(Student)session.get(Student.class, 101);
    String str=JOptionPane.showInputDialog("enter marks of (User1)");
    int m= Integer.parseInt(str);
    s.setMarks(m);
    tx.commit();
    session.close();
    factory.close();
    }
}

当我尝试执行此操作时,它显示另一个错误,错误是“STUDENT0 _”。“VERSON”:标识符无效

2 个答案:

答案 0 :(得分:0)

问题中的信息太少了。请填写完整的错误消息,数据库表的结构等。

但是......我猜错了,你有一个错字......

你错过了我:

  

“STUDENT0 _”。“VERSON”:标识符无效

来自:

private int verson;

和各自的setter / getters。

我敢打赌你的数据库表有一个名为VERSION的列。

答案 1 :(得分:0)

尝试放

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

在application.properties

否则使用@Table注释

明确指定studaent表名和模式名称
@Table(schema="...", name="...")