由于使用保留字作为列名,entitymanager提交日期类型时出错

时间:2013-04-10 11:06:52

标签: java database eclipselink derby

我使用eclipseLink和derby DB,当我使用时遇到以下错误 提交(entityManager.getTransaction().commit();)字段来自的定义 具有java util日期的实体。 这有什么不对?

输入数据的代码是:

Date date = new Date();
SimpleDateFormat parsedDate = new SimpleDateFormat("yyyy-mm-dd");
date = parsedDate.parse((String) memberValue);

成员值包含具有以下值的日期

"from": "2012-12-03"
"to": "2012-12-03"

实体看起来如下

@Entity
@Table(name = "f1_LeaveRequest")
public class LeaveRequest {


    @Id
    @Column(name = "leaverequest_id")
    private String id;
    private String type;
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date from;
    @Temporal(TemporalType.TIMESTAMP)

错误是:

Exception in thread "main" javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Syntax error: Encountered "FROM" at line 1, column 47.
Error Code: 20000
Call: INSERT INTO f1_LeaveRequest (leaverequest_id, FROM, LENGTH, STATE, TO, TYPE) VALUES (?, ?, ?, ?, ?, ?)
    bind => [6 parameters bound]

3 个答案:

答案 0 :(得分:2)

您可以使用@Column注释标记该字段,并为其提供不同的名称。

@Column(name ="from_timestamp")
@Temporal(TemporalType.TIMESTAMP)
private Date from;

答案 1 :(得分:1)

我想这是因为FROM是SQL中的保留关键字。尝试将您的字段重命名为fromDatefromTimestamp,或者查看问题是否以这种方式解决。

答案 2 :(得分:1)

FROM是保留关键字。使用有意义的内容,例如fromTime