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

Java Intellij IDEA jpa控制台问题从具有特定列的表中选择,java,mysql,jpa,intellij-idea,eclipselink,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 ExampleTa

我们有一个项目包括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
问题是“键”列,但我没有机会重命名它

我试图找到解决办法,但没有结果

我认为如果没有答案,最好的方法是创建bug报告

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

我们正在使用


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

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

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

谢谢,但如果我们这样做,Eclipselink会将其转换为:从ExampleTable中选择“key”;MySQLSyntaxErrorException:未知列“键”。@LemonTree您是如何使用此类列(键)创建表的?这是遗留问题。而且系统太重、太复杂,无法更改列名。@LemonTree我不明白,为什么生成的sql查询看起来像
SELECT'id',code',high'…
什么时候应该
SELECT id,code,high…
这就是问题所在。在Eclipselink中是否有禁用此行为的选项。
@Table
@Entity
public class ExampleTable implement Serializable
{
   // ...
   @Column(name = "'key'") // or @Column(name = "\"key\"")
   private String key;
   //...
}