Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EclipseLink/JPA是否有用于修改生成的SQL的插件框架?_Java_Mysql_Sql_Jpa_Eclipselink - Fatal编程技术网

Java EclipseLink/JPA是否有用于修改生成的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有这样的设施吗?我们能用某种方式扩展一种方言吗

背景:有一件事总是让ORM用户感到困惑,那就是SQL中的
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)