在我的应用程序中,我使用 eclipselink 和标准 api。
我的数据库有一个表,其中有一列名为“order”。
问题是当我使用标准 api 创建一个选择时,它产生了这个 sql:
SELECT id, order, name, phone, uri FROM campus
它抛出一个异常,因为“order”是 sql 中的一个限制关键字
如何强制条件 api 在列名中加上引号?
在我的应用程序中,我使用 eclipselink 和标准 api。
我的数据库有一个表,其中有一列名为“order”。
问题是当我使用标准 api 创建一个选择时,它产生了这个 sql:
SELECT id, order, name, phone, uri FROM campus
它抛出一个异常,因为“order”是 sql 中的一个限制关键字
如何强制条件 api 在列名中加上引号?
最简单(恕我直言最好)的方法是更改order
为campus_order
或类似的方法,并避免使用 SQL 关键字作为字段标识符。这种做法通常会导致问题。
我很高兴知道标准 API 可以解决此问题,但我建议您重命名该列。今天您正在使用标准 API,明天您将使用其他东西...但是最终生成了良好的旧 SQL,并且您想要的最后一个想法是发现您的一个查询不起作用,因为列名等于 SQL 版本之一的关键字。
重命名字段是一个更简单的选项,但 JPA 将引用分隔字段。要将其标记为分隔,只需在定义列时添加引号:“\”order\“”。