2011-06-06 64 views
3

我試圖保存在數據庫中的簡單對象,但它給我的問題。發揮架構JPA問題與保存()

這是我的對象類:

@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但我不知道我在哪裏可以查看我的日誌,所以如果有人能告訴我這些呢?

回答

8

lines是在MySQL中的保留字,你需要按以下方式逃避它:

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

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

確保沒有@Transactional(readOnly = true)的保存方法:)