Intellij IDEA jpa控制台问题从具有特定列的表中进行选择

时间:2013-11-01 21:32:16

标签: java mysql jpa intellij-idea eclipselink

我们有一个项目包括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");

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

1 个答案:

答案 0 :(得分:3)

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

@Table
@Entity
public class ExampleTable implement Serializable
{
   // ...
   @Column(name = "'key'") // or @Column(name = "\"key\"")
   private String key;
   //...
}