Java EclipseLink/JPA是否有用于修改生成的SQL的插件框架?
背景:有一件事总是让ORM用户感到困惑,那就是SQL中的Java EclipseLink/JPA是否有用于修改生成的SQL的插件框架?,java,mysql,sql,jpa,eclipselink,Java,Mysql,Sql,Jpa,Eclipselink,背景:有一件事总是让ORM用户感到困惑,那就是SQL中的null被区别对待,99%的编程语言,主要是null==null几乎到处都是true,但在ANSI SQL中null==null是false EclipseLink不会将为null的绑定参数转换为正确的为null,而是使WHERE table.field=null出错 SQL具有空安全比较运算符: 我们希望以某种方式更改SQL的生成,使其始终在where子句中使用运算符。在EclipseLink有这样的设施吗?我们能用某种方式扩展一种方言吗
null
被区别对待,99%的编程语言,主要是null==null
几乎到处都是true
,但在ANSI SQL中null==null
是false
EclipseLink不会将为null的绑定参数转换为正确的为null
,而是使WHERE table.field=null
出错
SQL具有空安全比较运算符:
我们希望以某种方式更改SQL的生成,使其始终在where子句中使用
运算符。在EclipseLink有这样的设施吗?我们能用某种方式扩展一种方言吗
另一种选择是为每一个比较都写这样的东西,伊克斯
谢谢大家! 您可以指定DatabasePlatform类,并在其中添加所需的任何运算符。请参见SQLServerPlatform initializePlatformOperators方法,作为如何为SQLServerDB设置特定运算符的示例。您可能希望使用任何可用于数据库的运算符来覆盖addOperator(simpleRation(Equal,“=”,“Equal”)) 您可以指定DatabasePlatform类,并在其中添加所需的任何运算符。请参见SQLServerPlatform initializePlatformOperators方法,作为如何为SQLServerDB设置特定运算符的示例。您可能希望使用任何一个可以用于数据库的运算符来覆盖addOperator(SimpleRation(Equal,“=”,“Equal”)。您能将您的注释转换为答案,以便我给您评分吗?非常感谢。完成了,尽管这不是一个很好的答案。我会看看我是否可以稍后再来扩展它,或者随意发布你自己的解决方案作为答案-你最终使用的详细细节更有可能帮助别人,而不是我的。
(agentRef = :agentRef OR agentRef IS NULL AND :agentRef IS NULL)