【问题标题】:ActiveJDBC and quoted identifiersActiveJDBC 和带引号的标识符
【发布时间】:2015-12-01 12:31:39
【问题描述】:

我正在尝试将 ActiveJDBC 与旧数据库一起使用,其中表和列的名称中通常包含连字符。这适用于SELECTs,因为我可以引用标识符(例如Model.where("\"stupid-name\" = ?", 1))。 INSERT/UPDATE 会出现问题,因为DefaultDialect 生成的 SQL 没有引用标识符。

我正在考虑为这种数据库类型(它是 Progress OpenEdge BTW)实现一个自定义方言,但我首先有几个问题:

  1. 在上游 ActiveJDBC 中是否欢迎为此类 DB(闭源,需要许可证 AFAICT)贡献方言?
  2. 如果没有,我可以使用外部维护的方言吗?
  3. 更改为使用带引号的标识符对其他数据库类型也有用吗?

【问题讨论】:

  • 对带有“特殊”字符的名称使用双引号是 SQL 中的定义方式。因此,如果“DefaultDialect”不起作用,那对我来说似乎是一个错误,而不是缺少的功能。

标签: java activejdbc javalite


【解决方案1】:

有一种方法可以用 back tic 定义表名:

@Table("`PEOPLE`") public class Person(){}

它已经过测试并可以与多个数据库一起使用。列的名称来自数据库,因此它们用于生成返回给数据库的查询,因为 ActiveJDBC 是一个传递框架:http://javalite.io/pass_through_framework

在框架中进行更改以强制使用特定方言应该很容易,但我们更喜欢开源数据库。如果您的源代码是封闭的,那么您将保持该方言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2012-09-30
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多