Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试在jpa表上创建新条目时出错_Java_Jpa_Eclipselink_Entitymanager - Fatal编程技术网

Java 尝试在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

我使用下面的代码将数据插入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]) 

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,但这值得吗?我个人觉得这种方法会影响查询的可读性。。。。