0

次のコードを使用してJPAにデータを挿入し、コミットしようとするとエラーが発生します。オブジェクトには完全なデータが含まれているため、ここで何が欠落しているのかわかりません。

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

エンティティは、すべてのゲッターとセッターで次のようになります

@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

FROMSQL予約キーワードです。

変数名を変更するか、@Columnアノテーションを使用してテーブル列の列名を変更するだけです。

于 2013-03-17T16:38:37.060 に答える
0

わあ、かっこいい。「from」という属性があり、SQLの予約語と衝突します。これはjpaプロバイダーのバグだと思いますが、おそらくそのような動作はjpaに準拠しています。回避策として、データベース内の列の名前を変更し、name="newcolumnname"を使用してfrom属性に@columnアノテーションを追加できます。

于 2013-03-17T16:42:56.423 に答える