我们有一个项目包括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");
如果我们运行它,我们会看到(在调试模式下)生成的查询中的所有名称都用`符号括起来。
答案 0 :(得分:3)
key
是MySQL数据库的保留关键字(参见MySQL: Reserved Words)
所以你应该在映射中转义保留关键字
您可以通过以下方式完成此操作:
@Table
@Entity
public class ExampleTable implement Serializable
{
// ...
@Column(name = "'key'") // or @Column(name = "\"key\"")
private String key;
//...
}