Mysql 为postgres配置hibernate,使col=null而不是“0”;是空的;
我通读了这篇文章 在hibernate中,NamedQuery经常被用作我们公司的goto,CriteriaAPI是一个很大的一次性工具。他们只是尽可能地简单Mysql 为postgres配置hibernate,使col=null而不是“0”;是空的;,mysql,postgresql,hibernate,Mysql,Postgresql,Hibernate,我通读了这篇文章 在hibernate中,NamedQuery经常被用作我们公司的goto,CriteriaAPI是一个很大的一次性工具。他们只是尽可能地简单 select c from Customer c where c.firstName=:firstName and c.middleName=:middleName and c.lastName=:lastName 当然,然后我们遇到了middleName为空的情况,事情就破裂了。然后我们发现firstName为空,然后就坏了。在整个
select c from Customer c where c.firstName=:firstName and c.middleName=:middleName and c.lastName=:lastName
当然,然后我们遇到了middleName为空的情况,事情就破裂了。然后我们发现firstName为空,然后就坏了。在整个模式中,我们经常会遇到这样的情况,我们正在寻找一种解释的方法
c、 对于c,middleName=null。middleName为null时为null
是否有一个hibernate设置,这样它就可以在mysql和postgres(最好的理想情况)中正确地执行它,或者在上面的postgres中使用该参数。那在哪里?我怎么能设置?或者是每个查询(呃)
我们正在从MySQL切换到postgres的过程中,因为MySQL处理空列上的唯一约束的方法与postgres相比对我们来说非常不理想(因为MySQL允许John null Smith两次,而postgres不允许)
谢谢,
Dean在PostgreSQL中,运算符是空安全相等谓词。然而,与mysql的
操作符类似,该谓词是SQL标准的扩展
我不知道hibernate有任何空安全的相等运算符,所以我想处理此类查询的唯一方法是通过该特性。显然,这些查询是特定于所使用的底层数据库的,因此并不理想。根据documation=null是不可能的。可能是因为这不是SQL标准。我认为与没有区别。PostgreSQL还具有
transform\u null\u equals
参数,用于对愚昧的应用程序进行转换。是的,我们正在考虑使用transform\u null\u equals,因为太多的开发人员一直在编写错误的查询,修改我们的查询以适应5列上的null非常快。我希望该规范能够考虑到这一点,因为它似乎正在为我们造成大量的SQL语句。