Play framework JPA problem with save()

我们两清 提交于 2019-12-13 14:18:12

问题


I'm trying to save a simple object in the database, but it's giving me problems.

This is my object class:

@Entity
@Table(name="lines")
public class Line extends GenericModel{

    @Id
    @Column(name="line_id")
    private int id;

    @Column(name="line_text")
    private String text;

    @Column(name="line_postid")
    private int postid;

    @Column(name="line_position")
    private int position;
}

And this is what I have in my controller:

Line l = new Line();
l.setPosition(0);
l.setPostid(4);
l.setText("geen");
l.save();

I'm doing the exact same thing for other Models, and I'm having no problems, only this one is giving me problems. When I refresh the browser I get: PersistenceException occured : org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

I also added jpa.debugSQL=true to my configuration, and in my console I'm getting:

Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lines (line_position, line_postid, line_text, line_id) values (0, 4, 'geen', 0)' at line 1

And the browser is also showing this: This exception has been logged with id 66k3glbb6 but I have no idea where I can view my logs, so if someone could tell me that too?


回答1:


lines is a reserved word in MySQL, you need to escape it as follows:

@Table(name="`lines`") // Hibernate way

or

@Table(name="\"lines\"") // JPA standard way



回答2:


Be sure there is no @Transactional(readOnly = true) for save method :)



来源:https://stackoverflow.com/questions/6255613/play-framework-jpa-problem-with-save

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!