1

我们有一个项目包括 Eclipselink 和 MySQL。

例如,如果我们使用简单查询:

SELECT a from ExampleTable a

它被转换成这样的东西:

SELECT `id`, `code`, `high`, `key`, `name`, `regionalCode` FROM `ExampleTable`

如果我使用的是 JPA 控制台,我会得到类似的东西:

SELECT id, code, high, key, name, regionalCode FROM ExampleTable

和错误信息

[42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key, name, regionalCode FROM ExampleTable' at line 1

问题是“关键”列,但我没有机会重命名它。

我试图找到解决该问题的选项,但没有结果。

我认为如果没有答案 - 好方法是创建错误报告。

我们如何获得列的封闭名称?

我们正在使用EntityManager

EntityManager em;
...
TypedQuery = em.createQuery("SELECT et FROM ExampleTable et");

如果我们运行它,我们会看到(在调试模式下)生成的查询中的所有名称都用 ` 符号括起来。

4

1 回答 1

2

key是 MySQL 数据库的保留关键字(参见MySQL:保留字)。
所以你应该在你的映射中转义保留关键字。
您可以通过以下方式执行此操作:

@Table
@Entity
public class ExampleTable implement Serializable
{
   // ...
   @Column(name = "'key'") // or @Column(name = "\"key\"")
   private String key;
   //...
}
于 2013-11-01T23:02:44.023 回答