Play Framework JPA проблема с сохранением () - PullRequest
3 голосов
/ 06 июня 2011

Я пытаюсь сохранить простой объект в базе данных, но это вызывает у меня проблемы.

Это мой класс объектов:

@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;
}

И это то, что у меня есть вмой контроллер:

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

Я делаю то же самое для других Моделей, и у меня нет проблем, только эта доставляет мне проблемы.Когда я обновляю браузер, я получаю: PersistenceException occured : org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

Я также добавил jpa.debugSQL=true в свою конфигурацию, и в консоли я получаю:

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

И браузер также показывает это: This exception has been logged with id 66k3glbb6 но я понятия не имею, где я могу просмотреть свои журналы, так что, если кто-то может сказать мне это тоже?

Ответы [ 2 ]

7 голосов
/ 06 июня 2011

lines - это зарезервированное слово в MySQL, вам нужно экранировать его следующим образом:

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

или

@Table(name="\"lines\"") // JPA standard way
0 голосов
/ 26 июня 2013

Убедитесь, что нет @Transactional(readOnly = true) для метода сохранения :)

...