I think this is at least partly related to HHH-4907. At least the syntax difference is explained by this. The {{Dialect}} class defines {{ boolean supportsRowValueConstructorSyntaxInInList()}} which is per default false. Value constructor syntax is queries of the form : {noformat} WHERE (ITEM_ID,PLANT_ID) IN ((?,?),(?,?),(?,?),...) {noformat} .
The Oracle91 dialect overrides this method and returns true. I think the default for SQLServer is not overridden and hence false. It depends of course on which {{Dialect}} you are using.
You could try to extend the Dialect you are using and override {{supportsRowValueConstructorSyntaxInInList()}}. This should force the alternative SQL syntax. I don't know if and from which version this syntax will/would work for SQLServer.
|