0

我使用以下代码向 JPA 插入数据,当我尝试提交时出现错误,该对象包含完整数据,所以我不明白我在这里遗漏了什么,知道吗?

    entityManager.getTransaction().begin();
    entityManager.persist(object);
    entityManager.getTransaction().commit();

带有所有 getter 和 setter 的实体看起来像这样

@Entity
public class LeaveRequest {

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
private String type;
private String from;
private String to;
private String length;
private String state;

public int getId() {

    return id;
}

错误是:

Internal Exception: java.sql.SQLSyntaxErrorException: Syntax error: Encountered "FROM" at line 1, column 31.
Error Code: 20000
Call: INSERT INTO LEAVEREQUEST (ID, FROM, LENGTH, STATE, TO, TYPE) VALUES (?, ?, ?, ?, ?, ?)
    bind => [6 parameters bound]
Query: InsertObjectQuery(LeaveRequest [id=1, type=VACATION, from=2012-12-27, to=2012-12-27, length=1 day, state=Rejected]) 
4

2 回答 2

4

FROM是一个 sql 保留关键字。

只需更改变量名或使用@Column 注解更改表列的列名。

于 2013-03-17T16:38:37.060 回答
0

哇酷。您有一个名为“from”的属性,它与 SQL 保留字冲突。我会说这是您的 jpa 提供程序中的一个错误,但谁知道呢,也许这种行为是符合 jpa 的。作为一种解决方法,您可以重命名数据库中的列并将 @column 注释添加到 from 属性,名称 =“newcolumnname”

于 2013-03-17T16:42:56.423 回答