1

私はダービー DB で eclipseLink を使用しています。commit() を使用すると、次のエラーが発生entityManager.getTransaction().commit();ます。ここで何が問題なのですか?

データを入力しているコードは次のとおりです。

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]
4

3 に答える 3

2

フィールドに@Column注釈を付けて、別の名前を付けることができます。

@Column(name ="from_timestamp")
@Temporal(TemporalType.TIMESTAMP)
private Date from;
于 2013-04-10T11:13:34.527 に答える
1

FROMこれは、SQL の予約済みキーワードであるためだと思います。フィールドの名前をfromDateor fromTimestampor に変更してみて、問題がそのように解決されるかどうかを確認してください。

于 2013-04-10T11:08:43.690 に答える