Java 尝试在jpa表上创建新条目时出错
我使用下面的代码将数据插入JPA,当我尝试提交时,我出错,对象包含完整的数据,所以我不明白我在这里遗漏了什么,知道吗Java 尝试在jpa表上创建新条目时出错,java,jpa,eclipselink,entitymanager,Java,Jpa,Eclipselink,Entitymanager,我使用下面的代码将数据插入JPA,当我尝试提交时,我出错,对象包含完整的数据,所以我不明白我在这里遗漏了什么,知道吗 entityManager.getTransaction().begin(); entityManager.persist(object); entityManager.getTransaction().commit(); 实体与所有getter和setter类似 @Entity public class LeaveRequest { @Id @Gen
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])
FROM
是sql保留关键字
只需更改变量名或使用@Column注释更改表列的列名。
FROM
是sql保留关键字
只需更改变量名或使用@Column注释更改表列的列名。哇,太酷了。您有一个名为“from”的属性,它与SQL保留字冲突。
我会说这是jpa提供商的一个bug,但谁知道呢,也许这种行为符合jpa。作为一种解决方法,您可以重命名数据库中的列,并使用name=“newcolumnname”将@column注释添加到from属性中。您有一个名为“from”的属性,它与SQL保留字冲突。
我会说这是jpa提供商的一个bug,但谁知道呢,也许这种行为符合jpa。作为一种解决方法,您可以重命名数据库中的列,并使用name=“newcolumnname”将@column注释添加到from属性,如果您对标识符进行分隔(例如,
“from”
),许多数据库将允许您使用保留字作为标识符。您可能可以通过@Column
注释(@Column(name=“\”FROM\”)
)来完成此操作。我不知道的是@BrianVosburgh,但这值得吗?就我个人而言,我觉得这种方法会影响查询的可读性……如果您对标识符进行分隔,许多数据库将允许您使用保留字作为标识符(例如“”中的“”。您可能可以通过@Column
注释(@Column(name=“\”FROM\”)
)来完成此操作。我不知道的是@BrianVosburgh,但这值得吗?我个人觉得这种方法会影响查询的可读性。。。。