【问题标题】:What is the proper way to have a user-authored EclipseLink DatabasePlatform subclass picked up?获取用户创作的 EclipseLink DatabasePlatform 子类的正确方法是什么?
【发布时间】:2013-02-15 16:51:47
【问题描述】:

EclipseLink 2.3.2(可能更高版本)中的 Informix 支持存在一个相当严重的错误,即未正确执行外部连接。我想继承 EclipseLink InformixPlatform 类来解决这个问题。

由于各种原因,我不想在我的persistence.xml 中指定要使用的数据库平台。我宁愿依靠 EclipseLink 发现合适平台的能力。

显然,开箱即用的 EclipseLink 不知道我的子类。我如何告诉 EclipseLink 我的子类存在,并且应该优先于通常自动发现的子类?

出于比较目的,Hibernate 在“方言解析器”的标签下提供了一些机制,正是这样做的:交给它一个自定义方言解析器,它让 处理自动发现过程。 EclipseLink 2.3.2 中的等价物是什么?

【问题讨论】:

  • 我看到了eclipselink.session-event-listener 属性,但我不确定这是不是用蒸汽锤追赶蚊子。这会是正确的方法吗?
  • 查看代码,它实际上是行不通的,因为如果我尝试从我的会话事件监听器设置平台,它会在我的监听器返回后立即被loginAndDetectDatasource() 删除!
  • 丑:也许我应该捕获postLogin事件,注销,然后设置我要使用的平台,然后再次登录。希望有更好的办法!
  • 这种通用方法似乎不起作用。稍后,当您尝试使用表生成器插入实体时,这样做会导致 NullPointerExceptions 从 QuerySequence 中返回。没有想法了。
  • 我现在要尝试SessionCustomizer 方法。没有关于此类的文档表明它在生命周期中的哪个位置被调用。

标签: eclipselink


【解决方案1】:

没有办法以编程方式安装DatabasePlatform 子类而不遇到其他错误。详情请见https://bugs.eclipse.org/bugs/show_bug.cgi?id=401388

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2019-07-20
    • 2012-06-05
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多